QWidget *back = new QWidget()
QWidget * test = new QWidget(this);
back->setGeometry(0,0,800,35);
test->setGeometry(0,20,800,35);
QPalette palette;
palette.setColor(QPalette::Background, QColor(227,228,228));
test->setPalette(palette);
back->show();
这样 内嵌的那个QWidget 的背景色根本不会变
但如果 不内嵌 单独显示 背景色是变的,如何解决啊?
5 个解决方案
#1
test->setStyleSheet("background-color:#FF00FF");
这样可以设置。。。内嵌Widget
QWidget *test;
这样可以设置。。。内嵌Widget
QWidget *test;
test = new QWidget(this);
QPushButton *p = new QPushButton(tr("Widget"),test);
QPushButton *p1 = new QPushButton(tr("Widget1"),test);
connect(p1,SIGNAL(clicked()),this,SLOT(OnColorClicked())); //test->setStyleSheet
QVBoxLayout *vBox = new QVBoxLayout;
vBox->addWidget(p);
vBox->addWidget(p1);
test->setLayout(vBox);
vBox = new QVBoxLayout;
vBox->addWidget(pBut);
vBox->addWidget(test); //内嵌
setLayout(vBox);
#2
原因在于只有最外层的widget才能使用setPalette(palette)来设置背景图和背景色。
内嵌的widget需要用的别的方式,比如setStyleSheet,比如QPainter去draw 等等
内嵌的widget需要用的别的方式,比如setStyleSheet,比如QPainter去draw 等等
#3
这样不行我试过了,我内嵌的widget有大量的元素要用qss来设置 这样一搞全城背景了
#4
我明天试试重绘的方法
#5
嗯,如果不想元素继承背景,paintEvent肯定没问题的
#1
test->setStyleSheet("background-color:#FF00FF");
这样可以设置。。。内嵌Widget
QWidget *test;
这样可以设置。。。内嵌Widget
QWidget *test;
test = new QWidget(this);
QPushButton *p = new QPushButton(tr("Widget"),test);
QPushButton *p1 = new QPushButton(tr("Widget1"),test);
connect(p1,SIGNAL(clicked()),this,SLOT(OnColorClicked())); //test->setStyleSheet
QVBoxLayout *vBox = new QVBoxLayout;
vBox->addWidget(p);
vBox->addWidget(p1);
test->setLayout(vBox);
vBox = new QVBoxLayout;
vBox->addWidget(pBut);
vBox->addWidget(test); //内嵌
setLayout(vBox);
#2
原因在于只有最外层的widget才能使用setPalette(palette)来设置背景图和背景色。
内嵌的widget需要用的别的方式,比如setStyleSheet,比如QPainter去draw 等等
内嵌的widget需要用的别的方式,比如setStyleSheet,比如QPainter去draw 等等
#3
这样不行我试过了,我内嵌的widget有大量的元素要用qss来设置 这样一搞全城背景了
#4
我明天试试重绘的方法
#5
嗯,如果不想元素继承背景,paintEvent肯定没问题的