私は QPushButton と、その「押された」信号に接続されたスロットを持っています:
connect( &m_oBtnSnapshot, SIGNAL( pressed() ), this,
SLOT( SnapshotClicked() ) );
スロットは次のように実装されています。
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() スロットが後で呼び出されます。ボタンを無効にしてもクリックできなくなるのはなぜですか?
スロットに入るときに信号を切断し、その後再接続しようとしましたが、何も役に立ちませんでした。