2012-11-05 43 views
1

是否可以通過更改用戶定義變量的值(對更改值執行操作)來簡單指示某個Qt控件屬性的更改。例如。我宣稱int a這是經常使用的多個功能。現在我需要構建一個關係:if (a == 0) then我的控件無效else我的控件處於活動狀態。 (我被C#數據綁定的啓發。)Qt:更改用戶變量指示控件狀態的變化

回答

0

在Qt中,使用QWidget :: setEnabled來啓用/禁用控件。你需要做的是創建一個子類,從中派生所有的GUI窗口,在其中定義一個函數來設置該變量並調用setEnabled。像這樣:

class Widget : public QWidget 
{ 
    ... 
    MySetEnabled(bool b) 
    { 
     a = b; 
     setEnabled(b); 
    } 

    int a; 
}; 
+0

但是,我不得不重寫所有使用'a'變量的函數,這就是我想避免的部分。我寧願尋找一些關係,例如:改變'a'的狀態導致發出SIGNAL,我可以連接到setEnabled。這樣的事情可能嗎?我不是說我必須在這裏使用信號。 – Zacateras

+0

@ Zacateras簡單地把no,沒有辦法'監視'在c + +中的變量。 –

0

Signals/Slots

在你的訪問方法發出連接到你要執行的動作的信號。

+0

如果我可以發出'a'變量的狀態變化信號,我會滿意的。 – Zacateras

+0

@Zacateras,你可以使用屬性,看到通知信號:http://doc.qt.digia.com/qt/properties.html –