簡體   English   中英

自定義QWidget中的背景顏色錯誤

[英]Wrong background color in custom QWidget

在我的GUI中,我有一個可滾動區域和要顯示在其中的小部件,如下所示:

_scoreBoxScroll = new QScrollArea(this);
_scoreBoxScroll->setFrameShape(QFrame::NoFrame);
_scoreBoxWidget = new QWidget(this);
_scoreBoxWidgetLayout = new QHBoxLayout(_scoreBoxWidget);

稍后在函數中添加一些自定義窗口小部件:

for (int i = 1; i <= _db->gamesPerRound(); ++i) {
    GameWidget *newGame = new GameWidget(_scoreBoxWidget, i, _db->playersString(MT::singular), _db->boogerScore());
    _scoreBoxWidgetLayout->addWidget(newGame);
}

_scoreBoxScroll->setWidget(_scoreBoxWidget);

這將導致GameWidgets的背景顏色錯誤: 小部件的背景色錯誤

當我用完全相同的代碼將這些小部件添加到構造函數中時(並且_db調用替換為靜態值,就像調用構造函數時一樣,還沒有_db),這些小部件將以正確的顏色顯示: 具有正確背景顏色的小部件

如果這很有趣:可以在git://l3u.de/muckturnier.git中找到整個代碼,發布的代碼位於ScorePage / ScorePage.cpp中。

為什么在這里顯示不同的顏色? 我該如何解決呢? 在此先感謝您提供的所有幫助!

編輯:第二個示例中使用的構造函數中的代碼是(因為我那里沒有_db):

_scoreBoxWidget = new QWidget(this);
_scoreBoxWidgetLayout = new QHBoxLayout(_scoreBoxWidget);
_scoreBoxLayout->addWidget(_scoreBoxWidget);

for (int i = 1; i <= 2; ++i) {
    GameWidget *newGame = new GameWidget(this, i, QString::fromUtf8("Paar"), 21);
    _scoreBoxWidgetLayout->addWidget(newGame);
}

_scoreBoxScroll->setWidget(_scoreBoxWidget);

編輯:我已經在git://l3u.de:muckturnier.git的“ demo”分支中創建了一個簡約的演示 –如果有人可以解釋這種行為,我將非常高興!

好的,我現在可以自己回答問題。 這是由於QScrollArea :: setWidget()在添加的小部件上調用setAutoFillBackground(true)的事實。 當我添加手冊時

_scoreBoxWidget->setAutoFillBackground(false);

之后

_scoreBoxScroll->setWidget(_scoreBoxWidget);

背景顏色符合預期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM