2010-12-09 61 views
1

我有一个包含几个QLineEdits的QWidget。当我告诉父QWidget改变其背景颜色 动态,我希望孩子(即QLineEdits)继承此修改。如何使QT小部件从其父部件更新修改的属性?

有没有一个简单的(阅读:一个函数调用)来做到这一点?

如果没有任何东西弹出,我想我只是循环遍历QWidget的子元素,但是当正确执行此操作时,我期望最终得到一个带有很多开销的递归函数,这就是为什么我要问。

编辑粗体。

回答

0

一般而言,您不需要担心对话框中的“开销”。除非你正在做某种大规模的绘制操作,否则UI应用程序根本不需要很多优化。与Qt系统本身实际进行更改相比,挖掘所有孩子并改变其背景是相对较快的操作。

这就是说,我认为有一种方法可以得到你想要的东西,但我不知道它是什么。我敢打赌,它会完全按照你的意愿去做。

你如何告诉它“改变颜色”顺便说一句? Qt似乎没有这样做的操作。您可以分配背景角色或更改托盘。至于后者,

http://doc.qt.nokia.com/4.7/qwidget.html#palette-prop

+0

感谢您的回复!关于找到我的问题的答案,我会看到别人提出的。关于实际改变颜色,我确实使用了ColorRoles和Palettes。如果您想了解更多信息,只需留言! – Timo 2010-12-09 19:26:15

0

如果您在使用分配给该控件的样式表设置背景颜色,不要在CSS中指定的任何选择,所有的子部件将继承适用于他们的任何属性。

我发现使用允许我针对特定样式的特定小部件的选择器很有用。

QWidget[objectName|="special_color"] 
{ 
    color: rgb(255, 255, 255); 
} 

如果我用这个分配给容器构件的样式表,将指定的颜色适用于任何子控件的名字开始与“special_color”像“special_colorEditBox1”不管他们是如何嵌套或包含。

+0

当试图动态改变颜色时,这也可以吗?说我按下按钮ChangeBackgroundColor,应该按钮修改CSS?这甚至可能吗? (我的CSS知识不会从HTML扩展到QT域...) – Timo 2010-12-09 21:37:02