Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2014, 17:30   #1
вова4
 
Регистрация: 29.07.2014
Сообщений: 3
По умолчанию определение виджета

я написал програму с книги Qt c++ програма компилируется без ошибок
одна проблема не могу понять в чем дело, выскакует пустая рамка , а
должна быть рамка с растровым изображением."stone.jpg"

может в этой строке проблема?
Код:
//pal2.setBrush(pwgt2->backgroundRole(), QBrush(QPixmap("stone.jpg")));


#include <QtGui>

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QWidget      wgt;

    QWidget* pwgt2 = new QWidget(&wgt);
    QPalette pal2;
    pal2.setBrush(pwgt2->backgroundRole(), QBrush(QPixmap("stone.jpg")));
    pwgt2->setPalette(pal2);
    pwgt2->resize(100, 100);
    pwgt2->move(75, 75);
    pwgt2->setAutoFillBackground(true);

    wgt.resize(200, 200);
    wgt.show();

    return app.exec();
}

Последний раз редактировалось Stilet; 29.07.2014 в 18:11.
вова4 вне форума Ответить с цитированием
Старый 29.07.2014, 18:27   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Может быть, картинка слишком большая и у нее левый верхний угол пустой? Попробуйте
pal2.setBrush(pwgt2->backgroundRole(), QBrush(QPixmap("stone.jpg").scaled( 100, 100)));
Вот мой рабочий код, делающий примерно то же самое:
Код:
QWidget widget(0, Qt::WindowStaysOnTopHint);	//Создаем окно верхнего уровня
widget.setWindowTitle("MyWidget");	//Устанавливаем заголовок окна
widget.resize(X, Y);	//Меняем размер окна
QPalette pal = widget.palette();	//Получаем палитру виджета (создаем ее копию)
pal.setColor(widget.backgroundRole(), Qt::red);		//Устанавливаем цвет фона
widget.setPalette(pal);		//Устанавливаем виджету обновленную палитру

QWidget* imgWgt = new QWidget(&widget);		//Дочерний виджет для вывода изображения
imgWgt -> resize(c, d);		//Меняем размер и положение виджета для картинки
imgWgt -> move(a, b);
imgWgt -> setCursor(Qt::IBeamCursor);	//Устанавливаем курсор, который будет отображаться при наведении указателя на виджет

QPalette pal2 = imgWgt -> palette();	//Получаем палитру виджета
pal2.setBrush(imgWgt -> backgroundRole(), QBrush(QPixmap("Penguins.jpg").scaled(c, d)));	//Устанавливаем в качестве фона кисть, созданную из загруженной картинки, с измененными размерами
imgWgt -> setPalette(pal2);		//Устанавливаем обновленную палитру
imgWgt -> setAutoFillBackground(true);		//При рисовании виджет будет автоматически заливаться кистью (картинкой)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 29.07.2014, 19:43   #3
вова4
 
Регистрация: 29.07.2014
Сообщений: 3
По умолчанию виджет

я уже все перепробовал всеравно рамка пустая , может я какую опцию
не поставил или файл .jpg не туда всунул
вова4 вне форума Ответить с цитированием
Старый 31.07.2014, 13:31   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Попробуй вместо stone.jpg прописать полный путь к файлу. Смотри при этом, что слеши должны экранироваться.

Ну или если не выйдет (со слешами возиться не хочешь) - положи картинку возле исполняемого файла и запусти программу.

------------- добавил:
код работает, я проверил. Пустая рамка будет если программа не сможет найти файл stone.jpg.

Файл с картинкой должен лежать возле исполняемого файла.

Последний раз редактировалось rrrFer; 31.07.2014 в 13:38.
rrrFer вне форума Ответить с цитированием
Старый 31.07.2014, 17:23   #5
вова4
 
Регистрация: 29.07.2014
Сообщений: 3
По умолчанию

ура все получилось , большое спасибо!!!
вова4 вне форума Ответить с цитированием
Старый 31.07.2014, 19:56   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Кстати, если не хотите размещать картинки возле исполняемых файлов, их можно запихнуть прямо внутрь (исполняемого файла). В Qt для этого есть файлы ресурсов.

Я вот вам ссылку даже нашел, если интересно: http://doc.crossplatform.ru/qt/4.7.x/resources.html
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение виджета vk.com к wp. даже с этим могут быть проблемы Wi1D JavaScript, Ajax 3 18.01.2014 10:16
програмка в виде Виджета для Win7 beegl Общие вопросы Delphi 5 01.09.2013 15:10
Нужен программист для создания виджета радио AJIaTuEJIbKa Фриланс 6 15.06.2012 16:20
[Qt] Сигнал от элемента-виджета таблицы Injector Qt и кроссплатформенное программирование С/С++ 3 26.10.2011 17:29
Доведение до ума виджета Unique HTML и CSS 2 25.04.2011 08:39