在Windows 7 (MSVC 2010)上使用Qt 4.8.4,我有一个带工具栏的标准应用程序中的。我想让工具栏保持灰色,但中心小部件应该是白色背景。调用centralWidget->setStyleSheet("background-color: white;")似乎起初能达到目的,但在使用Designer生成的小部件(一个Q_OBJECT)时不能实现。接着,我尝试使用各种其他方法来设置样式表(也使用Designer),但都无法实现。
要查看此效果,请添加或删除test.h中的Q_OBJECT行。当它存在时,只有标签会获得白色背景。如果注释掉Q_OBJECT,则整个中心小部件为白色。当然,我希望整个区域都是白色,但也需要Q_OBJECT。
以下是文件:
main.cpp:
要查看此效果,请添加或删除test.h中的Q_OBJECT行。当它存在时,只有标签会获得白色背景。如果注释掉Q_OBJECT,则整个中心小部件为白色。当然,我希望整个区域都是白色,但也需要Q_OBJECT。
以下是文件:
main.cpp:
#include "test.h"
class testwin : public QMainWindow {
public:
QWidget *centralWidget;
QToolBar *mainToolBar;
testwin(QWidget *parent = 0) : QMainWindow(parent) {
centralWidget = new test(this);
setCentralWidget(centralWidget);
mainToolBar = new QToolBar(this);
this->addToolBar(Qt::TopToolBarArea, mainToolBar);
};
~testwin() {};
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
testwin w;
w.centralWidget->setStyleSheet("background-color: white;");
w.show();
return a.exec();
}
test.h:
#include <QtGui>
class test : public QWidget
{
Q_OBJECT // remove this
public:
QLabel *label;
test(QWidget *parent = 0) {
resize(400, 300);
label = new QLabel(this);
label->setText("Test");
};
};
状态更新:
setStyleSheet("QWidget { background-color: white; }")
不能解决该问题。- 我成功地使所有小部件(包括弹出式对话框)变为白色,但这不是我想要的。