我可以更改除窗口之外的所有 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 背景的主要内容,如果未能解决你的问题,请参考以下文章