【问题标题】:How to change the background colour of a QWidget inside QStackedWidget using css?如何使用 css 在 QStackedWidget 中更改 QWidget 的背景颜色?
【发布时间】:2013-01-20 14:00:57
【问题描述】:

如何使用 Qt css 更改 QStackedWidget 中 QWidget 的背景颜色?

ProjectPage* p = new ProjectPage(this);
ui.stackedWidget->addWidget(p);

我的ProjectPage 是Qt 设计器中内置的自定义QWidget。目前我尝试在设计器中更改ProjectPage 的背景颜色,但没有成功。这是一个失败,因为在我的应用程序中显示的背景颜色是我使用 css 设置的所有QWidget 的默认颜色,唯一的例外是我的ProjectPage 上的所有标签和按钮都更改了颜色。

我目前无法找到 QstackedWidget css 文档。


注意: 背景图像工作正常,我正在探索这与我为所有 QWidgets 设置默认图像有关的可能性。

【问题讨论】:

    标签: c++ css qt user-interface


    【解决方案1】:
    setStyleSheet ("YourQWidgetBasedPageClass#nameOfYourPageWidget {background: white;}");
    

    如果您要覆盖该自定义小部件类的 paintEvent,请记住在您的实现中的某处调用默认的 QWidget::paintEvent,否则 css 将无法启动

    请注意,# 名称仅在您想要选择特定小部件时才是必需的。此外,颜色可以是任何 html 样式名称:白色、红色、紫色等...以及#XXXXXX 样式颜色或使用 RGB(...)

    【讨论】:

    • 我正在使用默认的paintEvent() 方法。而且我已经在设计器中进行了背景更改,所以我不会弄错名字。
    • 你可以像我上面描述的那样在设计器中的特定小部件上设置样式表
    【解决方案2】:

    我的问题是由使用下面的 css 代码引起的。

    QWidget {
        background-image: url(:/texture.png);
    }
    

    通过定义默认纹理,您设置的所有背景颜色都隐藏在该纹理后面。

    解决方案是从QWidget 中删除默认纹理或加载具有所需颜色的新纹理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多