Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Wizard от Октябрь 19, 2009, 09:49



Название: Как задать фоновый рисунок виджету?
Отправлено: Wizard от Октябрь 19, 2009, 09:49
Как задать фоновый рисунок форме?  пытался через QPalette , что то не вышло (

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);   
   MainWindow *wndMain = new MainWindow();
   
        QPalette pal;
        pal.setBrush(QPalette::Window, QBrush(QPixmap("/storage card/Image/back.jpg")));
   wndMain->setPalette(pal);

   wndMain->showMaximized();


Название: Re: Как задать фоновый рисунок виджету?
Отправлено: SABROG от Октябрь 19, 2009, 11:44
Попробуй использовать сначала картинку .png формата, для .jpg нужно плагин таскать.

Код
C++ (Qt)
  QPalette pal;
  pal.setBrush(wndMain->backgroundRole(), QBrush(QPixmap("/storage card/Image/back.jpg")));
  wndMain->setPalette(pal);
 

Как вариант:

Код
C++ (Qt)
wndMain->setStyleSheet("background-image: url(/storage card/Image/back.jpg"););
 


Название: Re: Как задать фоновый рисунок виджету?
Отправлено: Wizard от Октябрь 19, 2009, 16:32
SABROG, спс работает )))


Название: Re: Как задать фоновый рисунок виджету?
Отправлено: voral от Октябрь 15, 2010, 23:24
Попробуй использовать сначала картинку .png формата, для .jpg нужно плагин таскать.
Зделал так:
Код
C++ (Qt)
VWelcome::VWelcome(QWidget *parent)
:QDialog(parent)
{
QPalette pal;
pal.setBrush(this->backgroundRole(), QBrush(QPixmap(":/res/welcome.png")));
this->setPalette(pal);
this->laMain = new QVBoxLayout();
this->setLayout(this->laMain);
this->btNew = new QPushButton(tr("New"));
this->laMain->addWidget(btNew,0);
}
 
В результате при создании и при ресайзе окна мелькает правильный фоню А потом все заливается черно-серым градиентом.
Ни как не могу понять чем дело.
Пытался сделать через таблцу стилей (this->setStyleSheet(...)) фон у кнопок появляется вместо формы.
В прочем хотелось бы разобраться именно с первым вариантом


Название: Re: Как задать фоновый рисунок виджету?
Отправлено: voral от Октябрь 15, 2010, 23:53
Такс градиент появляется на КДЕ4 в IceWM все ок.


Название: Re: Как задать фоновый рисунок виджету?
Отправлено: voral от Октябрь 16, 2010, 00:15
Решил проблему
Код
C++ (Qt)
VWelcome::VWelcome(QWidget *parent)
:QDialog(parent)
{
this->centralWidget =  new QWidget(this);
QPalette pal;
pal.setBrush(this->centralWidget->backgroundRole(), QBrush(QPixmap(":/res/welcome.png")));
this->centralWidget->setPalette(pal);
this->centralWidget->setFixedSize(348,247);
this->centralWidget->move(0,0);
this->centralWidget->setAutoFillBackground(true);
this->setFixedSize(348,247);
this->laMain = new QVBoxLayout();
this->centralWidget->setLayout(this->laMain);
this->btNew = new QPushButton(tr("New"));
connect(this->btNew,SIGNAL(clicked()),this,SLOT(Test()));
this->laMain->addWidget(btNew,0);
}