首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

在执行槽函数之前如何让界面的按钮处于不可用状态

2012-12-16 
在执行槽函数之前怎么让界面的按钮处于不可用状态?最近做Qt GUI编程,我做了一个界面程序,上面有很多按钮(

在执行槽函数之前怎么让界面的按钮处于不可用状态?
最近做Qt GUI编程,我做了一个界面程序,上面有很多按钮(什么按钮反正不重要)
然后我用了一个定时器QTimer
check_timer = new QTimer(this);
QObject::connect(check_timer,SIGNAL(timeout()),this,SLOT(check()));
check_timer->start(10000);

在没有其他信号的情况下,系统会每隔10S调用一次check(),但在check()的运行过程中,我希望能够把界面上所有的按钮都设置为不可用状态,也就是调用pushButton的isEnable(),在执行完函数后再把按钮设置为可用状态。

查了一些资料,可能是因为Qt的事件机制,我在check函数中将按钮都设置不可用状态,但它只能在check执行完之后才能生效。

我想问的是,有没有什么方法让设置按钮不可用的方法即时生效。
还是说因为Qt的刷新重绘机制是有一点点延迟的,并不是即时生效的。
[最优解释]
你说的是QPushButton 的 voidsetEnabled ( bool ) 这个函数只能在check执行之后才生效?

我之前也做过类似的东西,定时这段过程setEnabled(false),不让界面有相应,定时结束了再setEnable(true)。没有太大的延时问题。
[其他解释]
要是觉得check太快 可以在里面sleep一下的 
设置完disable后  按钮已经处于不可用状态 
[其他解释]
其实只要测试一下就知道啦,很简单,
按钮变灰和不可用是两回事,
两行代码:
button->setEnabled(false);
qDebug() << button->isEnabled();
只要输出false就行了,至于变灰是update()以后的事,但是按钮已经不能点了。
[其他解释]
应该没有延迟的!
[其他解释]
难道
check() {
    setEnabled(false);
    ...
    setEnabled(true);
}
不行?
[其他解释]

引用:
你说的是QPushButton 的 voidsetEnabled ( bool ) 这个函数只能在check执行之后才生效?

我之前也做过类似的东西,定时这段过程setEnabled(false),不让界面有相应,定时结束了再setEnable(true)。没有太大的延时问题。


因为这个过程是读写串口,如果没不出问题的话,是非常快的,所以界面上的按钮变成灰色还看不出来。

那我想问问,虽然它没有变成灰色,但是是不是按钮的不可用状态已经生效了?
[其他解释]
引用:
其实只要测试一下就知道啦,很简单,
按钮变灰和不可用是两回事,
两行代码:
button->setEnabled(false);
qDebug() << button->isEnabled();
只要输出false就行了,至于变灰是update()以后的事,但是按钮已经不能点了。


OK,了解了,要的就是这个答案。

热点排行