在执行槽函数之前怎么让界面的按钮处于不可用状态?
最近做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);
}
不行?
[其他解释]