Russian Qt Forum

Qt => Общие вопросы => Тема начата: romanick от Июнь 25, 2010, 16:09



Название: setPalette не работает в linux
Отправлено: romanick от Июнь 25, 2010, 16:09
Нашёл воттакой код для установки фонового изображения для виджета
QPalette pal;
pal.setBrush(this->backgroundRole(), QBrush(QImage("/etc/testapp/logo_back.bmp")));
this->setPalette(pal);

Странно, но этот код работает корректно только под Windows. Под linux наблюдается вот что: картинка грузится, но тут же заменяется сплошным чёрным цветом. Что не так?

openSUSE 11.2
Qt 4.6.3


Название: Re: setPalette не работает в linux
Отправлено: pastor от Июнь 25, 2010, 16:32
попробуй установить для виджета setAutoFillBackground(true);


Название: Re: setPalette не работает в linux
Отправлено: RoS от Июнь 27, 2010, 21:06
и еще возможно

Код:
QPalette pal = this->palette();

//ваши операции + включая предыдущий комментарий


Название: Re: setPalette не работает в linux
Отправлено: romanick от Июнь 30, 2010, 10:00
Не помогло... И ошибка какая-то плавающая... То она есть, то её нет. Вчера вот, её не было, всё думаю, победил, а сегодня опять появилась...


Название: Re: setPalette не работает в linux
Отправлено: pastor от Июнь 30, 2010, 12:00
Что за ошибка? Выложи побольше кода


Название: Re: setPalette не работает в linux
Отправлено: romanick от Июнь 30, 2010, 12:28
Код элементарен
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    QPalette pal = this->palette();
    pal.setBrush(this->backgroundRole(), QBrush(QImage("/home/romanick/test.png")));
    setAutoFillBackground(true);
    this->setPalette(pal);
    ui->setupUi(this);
}

Совершенно случайно запустил приложение не из под IDE (Qt Creator 2.0) а просто так, и о чудо! Всё заработало!!!
У меня нет слов... Какая, блин, связь казалось бы...