Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: zubr3 от Март 13, 2006, 11:33



Название: Почему setPalette для всех виджетов
Отправлено: zubr3 от Март 13, 2006, 11:33
В диалоговом окне в конструкторе задаю картинку для фона.
if(pixmap.load(":/background.png")==true)
{
   brushStone.setTexture(pixmap);
   paletteStone.setBrush(QPalette::Background,brushStone);
   setPalette(paletteStone);
}
Однако этот фон почему-то применяется и для tabWidget'а на этом диалоге. На кнопоки и comboBox'ы эта палитра не действует. Подскажите в чем причина этого поведения?


Название: Почему setPalette для всех виджетов
Отправлено: Asaphus_Expansus от Март 13, 2006, 14:50
Какая версия Qt?


Название: Почему setPalette для всех виджетов
Отправлено: zubr3 от Март 13, 2006, 15:42
Версия Qt 4.1.0 Open Source Edition (Windows/MinGW).

добавлено спустя 41 минуту:

 Выяснил, что если установить и добавитьследующий код:
paletteDefault=QApplication::palette();
tabWidget_relations->setPalette(paletteDefault);
то tabWidget будет отображаться в системной палитре. Можно ли сделать так, чтобы при setPalette изменялась палитра только у соответствующего класса, а у его потомков - нет? То есть нужна функция подобная QApplication::setPalette(palette,className), только чтобы она не влияла на  классы для которых className является parent'ом.