如何让QT小部件从其父窗口小部件更新修改后的属性?

时间:2010-12-09 17:21:59

标签: c++ layout qt4

我有一个包含多个QLineEdits的QWidget。当我告诉父QWidget更改其背景颜色时 动态,我希望孩子们(即QLineEdits)继承此修改。

是否有一个简单的(读取:一个函数调用)来执行此操作?

如果没有弹出,我想我只是循环遍历QWidget的子代,但是当正确地执行此操作时,我希望最终得到一个带有大量开销的递归函数,这就是我要问的原因。 / p>

大胆地编辑。

2 个答案:

答案 0 :(得分:0)

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

那就是说,我认为有办法得到你想要的东西,但我不知道它是什么。我敢打赌它会完全按照你的意愿行事。

你打算如何告诉它“改变颜色”btw? Qt似乎没有这样做的操作。您可以指定后台角色或更改托盘。至于后者:

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

答案 1 :(得分:0)

如果使用分配给该窗口小部件的样式表设置背景颜色,并且未在CSS中指定任何选择器,则所有子窗口小部件都将继承适用于它们的任何属性。

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

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

如果我在分配给容器窗口小部件的样式表中使用它,它会将指定的颜色应用于名称以“special_color”开头的任何子窗口小部件,如“special_colorEditBox1”,无论它们如何嵌套或包含。