2010-12-09 42 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