在Windows 7上使用Qt 4.8.4(MSVC 2010)我的應用程序中有一個標準的QMainWindow
帶有工具欄。我希望工具欄保持灰色,但中央小部件應該有白色背景。起初調用centralWidget->setStyleSheet("background-color: white;")
似乎完成了這項工作,但將其與設計器生成的小部件(Q_OBJECT
)一起使用不會。隨後我玩弄了各種其他方法來設置樣式表(也使用Designer)無濟於事。設置QMainWindow中央部件的背景
要查看此效果,請在test.h
中添加或刪除Q_OBJECT
行。當它在那裏,只有標籤得到一個白色的BG。如果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; }")
不解決問題- 我成功地讓每個Widget(包括彈出對話框)變成白色,但那不是我想要的。
並沒有幫助 - 同樣的行爲,灰色背景上的白色標籤:( – Batox