我有一个 QPushButton,以及一个连接到它的“按下”信号的插槽,如下所示:
connect( &m_oBtnSnapshot, SIGNAL( pressed() ), this,
SLOT( SnapshotClicked() ) );
Slot 是这样实现的:
void
GUI::SnapshotClicked()
{
m_oBtnSnapshot.blockSignals( true );
m_oBtnSnapshot.setDisabled( true );
m_oBtnBenchmark.repaint();
m_oBtnBenchmark.update();
emit( DoSnapshotWork() );
m_oBtnSnapshot.setDisabled( false );
m_oBtnSnapshot.blockSignals( false );
}
如您所见,我在单击按钮时禁用该按钮,并在一切完成后重新启用它。让我们假设 DoSnapshotWork() 函数需要 5 秒......虽然这 5 秒按钮被禁用,但如果我点击它,SnapshotClicked() Slot 将在之后被调用。为什么禁用按钮不会阻止我单击它?
我已经尝试在进入插槽时断开信号并在之后重新连接,但没有任何帮助。