【问题标题】:I can change all the qt wingets background except window我可以更改除窗口之外的所有 qtwingets 背景
【发布时间】:2016-06-30 04:27:13
【问题描述】:

我遇到了一个问题,我无法从 qt 窗口更改背景。我可以更改 MainWindow 和所有其他小部件的背景,但是当我尝试在另一个窗口中执行此操作时,它不会改变。我为所有小部件和窗口使用相同的图像,所以位置不是问题。

我正在使用带有样式表和 Visual Studio 2013 的 qt 设计器。奇怪的是,在 QtDesigner 中,MainWindow 背景不可见,直到我编译并运行所有内容,但在其他窗口中,背景是可见的,但是当我编译好了。

我已经通过代码尝试但结果相同。

有什么帮助吗?

【问题讨论】:

  • 您是否分别为每个窗口指定样式表?如果只有 MainWindow 有样式表 - 其他窗口是否创建为 MainWindow 的子项(如 passwordDialog = new MyDialog(this); )?
  • 我正在为每个窗口分别使用样式表。
  • 如果我改变了背景颜色,它可以工作,但不适用于图像......嗯

标签: c++ visual-studio qt stylesheet qt-designer


【解决方案1】:

查看另一个类似的问题,我发现了这个:QtStylesheet

我的问题的答案是该帖子的第二个答案。问题是我必须重新实现 paintEvent(),因为没有它,小部件将仅支持 background、background-clip 和 background-origin 属性。

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

代码取自另一篇文章的答案。

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2012-02-05
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多