Qt3 (setBackgroundPixmap)

Модератор: Модераторы разделов

skillergti
Сообщения: 34
ОС: slackware

Qt3

Сообщение skillergti »

Здравствуйте.

Имеется код:

Код: Выделить всё

#include<qapplication.h>
#include<qwidget.h>
#include<qpixmap.h>
int main(int argc,char* argv[]){
  QApplication app(argc,argv);
  QWidget wgt;
  app.setMainWidget(&wgt);
  wgt.resize(50,50);
  wgt.setBackgroundPixmap(QPixmap("bricks.jpg"));
  wgt.show();
  return app.exec();
}


но получаю пустое окошко, вместо окна с текстуркой.
Спасибо сказали:
Аватара пользователя
HapKoM
Сообщения: 16
ОС: Fedora 10

Re: Qt3

Сообщение HapKoM »

У меня изображение становится видимым, когда я изменяю размеры окна.
Кстати после wgt.show() точки с запятой нет.
Whatever we tell you is meant to be crap
We hate all music and especially rap

KMFDM Sucks!
Спасибо сказали:
skillergti
Сообщения: 34
ОС: slackware

Re: Qt3

Сообщение skillergti »

Всё, разобрался...
Если в КДЕ (3.5) запускать из конкуера то не отображается нифига.
А если из шелла то всё работает.
Спасибо сказали:
Аватара пользователя
HapKoM
Сообщения: 16
ОС: Fedora 10

Re: Qt3

Сообщение HapKoM »

skillergti писал(а):
19.09.2008 01:21
Всё, разобрался...
Если в КДЕ (3.5) запускать из конкуера то не отображается нифига.
А если из шелла то всё работает.

А у меня ни из шелла, ни из конкуерора, ни из dolphin'а не работает. Так что ИМХО это не решение проблемы.
Кстати в trolltech'овской документации в описании метода setBackgroundPixmap написано следующее:

Код: Выделить всё

This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code. Use setPaletteBackgroundPixmap() or setErasePixmap() instead.
ссылка
Whatever we tell you is meant to be crap
We hate all music and especially rap

KMFDM Sucks!
Спасибо сказали:
sim1
Сообщения: 155
ОС: GNU,BSD

Re: Qt3

Сообщение sim1 »

попробуй так

Код: Выделить всё

#include<qapplication.h>
#include<qwidget.h>
#include<qpixmap.h>
int main(int argc,char* argv[]){
  QApplication app(argc,argv);
  QWidget wgt;
  wgt.setBackgroundPixmap(QPixmap("bricks.jpg"));
  wgt.resize(50,50);
  app.setMainWidget(&wgt);
  wgt.show();
  return app.exec();
}
Спасибо сказали:
Аватара пользователя
HapKoM
Сообщения: 16
ОС: Fedora 10

Re: Qt3

Сообщение HapKoM »

sim1 писал(а):
19.09.2008 13:10
попробуй так
Неа. Всё равно не работает:(
Whatever we tell you is meant to be crap
We hate all music and especially rap

KMFDM Sucks!
Спасибо сказали:
sim1
Сообщения: 155
ОС: GNU,BSD

Re: Qt3

Сообщение sim1 »

Всё, разобрался...
Если в КДЕ (3.5) запускать из конкуера то не отображается нифига.
А если из шелла то всё работает.
Вот эта проблема сто процентов связана с тем, что путь к файлу с картинкой относительный (конкуера не меняет тек. директорию другими словами не делает "cd" ) т.е. в выражении

Код: Выделить всё

...
QPixmap("bricks.jpg")
...
необходимо использовать абсолютный путь. Для этого можно использовать метод applicationDirPath() класса QApplication (если картинка находится в той же директории, что и исполняемый файл ) т.е

Код: Выделить всё

#include<qapplication.h>
#include<qwidget.h>
#include<qpixmap.h>
int main(int argc,char* argv[]){
  QApplication app(argc,argv);
  QWidget wgt;
  QString l_file= app.applicationDirPath()+"/bricks.jpg";
  wgt.setBackgroundPixmap(QPixmap(l_file));
  wgt.resize(50,50);
  app.setMainWidget(&wgt);
  wgt.show();
  return app.exec();
}
Если все-таки не работает то тогда нужно смотреть, как собран QT - включена ли поддержка jpg и т.д.

метод setBackgroundPixmap - актуален для 3-го для 4-го лучше делать так

Код: Выделить всё

 ...
 QPalette palette;
 QPixmap pixmap(l_file)
 palette.setBrush(wgt.backgroundRole(), QBrush(pixmap));
 wgt.setPalette(palette);
...
Спасибо сказали:
Аватара пользователя
HapKoM
Сообщения: 16
ОС: Fedora 10

Re: Qt3

Сообщение HapKoM »

sim1 У меня всё равно не работает ни код для Qt3, ни для Qt4. Пробовал jpg, bmp, png, gif. Причём, при запуске окна картинка появляется буквально на секунду, после чего становится чёрной. Кроме того она, так же на секунду, появляется при увеличении размеров окна.
Whatever we tell you is meant to be crap
We hate all music and especially rap

KMFDM Sucks!
Спасибо сказали: