Сегодня с толкнулся со следующей проблемой(на Qt 4.4 все работало нормально а на 4.7 все поехало):
У меня есть собственный редактор форм(на подобии qt дизайнера ), для удобства я добавил стили для деревьев и таблиц. В центральный виджет QMDIArea.На нем создаю QMdiSubWindow, а уже на эти окошки кидаю редактируемые элементы. У части элементов перегружена функция paint и они рисуются самостоятельно, часть объектов рисуется средствами Qt - кнопки, деревья,листбоксы и т.д. Изменение фонового цвета элементов производится через функцию setPalette. В Qt версии 4.4 все работало нормально, а в Qt 4.7 стиль от родительского объекта распространился и на QMdiSubWindow.
Как можно решить данную проблему? Часть объектов использует стиль а часть нет.
Вот накидал небольшой пример демонстрирующий мою проблему:
#include "widget.h"
#include "ui_widget.h"
#include <QPalette>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
pButton = new QPushButton( "test", this );
pButton->show();
pTextEdit = new QTextEdit( this );
pTextEdit->setGeometry(100,0,100,50);
pTextEdit->show();
QPalette pal = pTextEdit->palette();
pal.setColor( QPalette::Base,Qt::red);
pTextEdit->setPalette(pal);
connect( pButton, SIGNAL(clicked( bool )), this, SLOT(Clicked( bool )));
setStyleSheet("QTreeView { alternate-background-color: yellow; }");
}
void Widget::Clicked( bool )
{
QPalette pal = pTextEdit->palette();
pal.setColor( QPalette::Base,Qt::green);
pTextEdit->setPalette(pal);
}
Widget::~Widget()
{
delete ui;
}
Заранее благодарен!!!
ах да, раньше Windows XP теперь Win7