2012-11-05 104 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 –