我可以更改除窗口之外的所有 qtwingets 背景

Posted

技术标签:

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

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

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

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

有什么帮助吗?

【问题讨论】:

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

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

【讨论】:

以上是关于我可以更改除窗口之外的所有 qtwingets 背景的主要内容,如果未能解决你的问题,请参考以下文章

如何暂存(git add)除嵌入式存储库之外的所有更改和新文件?

重新加载网页上除一个 div 之外的所有内容

如何授予 IAM 组访问除创建新用户之外的所有内容的权限?

将除一个元素之外的所有元素设置为暗色背景

如何禁用表单上除按钮之外的所有控件?

除 Firefox 之外的所有浏览器中的 Javascript 错误