4

Windows 7 (MSVC 2010) で Qt 4.8.4 を使用するQMainWindowと、アプリにツールバーを備えた標準があります。ツールバーをグレーのままにしたいのですが、中央のウィジェットの背景は白にする必要があります。呼び出しcentralWidget->setStyleSheet("background-color: white;")は最初は機能するように見えましたが、デザイナーが生成したウィジェット (a 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();
}

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; }")問題を解決しない
  • すべてのウィジェット (ポップアップ ダイアログを含む) を白くすることに成功しましたが、それは私が望んでいることではありません。
4

3 に答える 3

2
w.centralWidget->setStyleSheet("QWidget { background-color: white; }");
于 2013-07-25T14:28:07.033 に答える