gpt4 book ai didi

qt - 设置 QMainWindow 中央小部件的背景

转载 作者:行者123 更新时间:2023-12-04 13:25:41 25 4
gpt4 key购买 nike

在 Windows 7 (MSVC 2010) 上使用 Qt 4.8.4 我有一个标准 QMainWindow在我的带有工具栏的应用程序中。我希望工具栏保持灰色,但中央小部件应该有白色背景。调用 centralWidget->setStyleSheet("background-color: white;")起初似乎可以完成这项工作,但是将它与设计器生成的小部件(Q_OBJECT)一起使用却没有。随后,我尝试了各种其他方法来设置样式表(也使用 Designer),但无济于事。

要查看此效果,请添加或删除 Q_OBJECT线在 test.h .当它在那里时,只有标签会得到一个白色的背景。如 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();
}

测试.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; }")不能解决问题
  • 我成功地将每个小部件(包括弹出对话框)都变成了白色,但这不是我想要的。
  • 最佳答案

    好的,可以找到正确的答案here ,或者通过阅读文档。我需要为我的测试类实现paintEvent:

    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");
    };

    void paintEvent(QPaintEvent *)
    {
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    }

    };

    也非常感谢 1+1=2 在 the Qt project forum 为我阅读手册.

    关于qt - 设置 QMainWindow 中央小部件的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17860733/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com