我的程序中有一个按钮,点击它后做了很多计算.我想在这段时间禁用它,当执行计算不允许程序崩溃但我的方法不起作用.
void MainWindow::on_pushButton_clicked()
{    
ui->pushButton->setEnabled(false);
for( ) { CALCULATION }
ui->pushButton->setEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
函数setEnabled(false); 不会按下按钮,我可以点击它多少次我想要.
此代码的问题在于消息循环的设计。在处理一条消息(在这种情况下为按钮单击的处理程序)时,不会处理其他消息,包括重新绘制小部件以反映其状态更改的消息。现在,在您的功能中,您可以禁用该按钮,然后再次启用它,然后才能对其进行更新。
请注意,进行冗长的计算是UI消息处理程序是一个坏主意,因为它会锁定整个UI。而是使用异步模型(例如工作线程)或使用计时器逐步进行计算。然后,您还可以看到该按钮被禁用。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           10015 次  |  
        
|   最近记录:  |