一時的にシグナルを無効化するには
QString oldText = cb->currentText(); // 現在の文字を保存
cb->blockSignals(true); // イベントを一時的に無効化
cb->clear();
cb->addItems(items);
cb->setCurrentText(oldText); // 元の文字に戻す
cb->blockSignals(false); // イベント再開
QString oldText = cb->currentText(); // 現在の文字を保存
cb->blockSignals(true); // イベントを一時的に無効化
cb->clear();
cb->addItems(items);
cb->setCurrentText(oldText); // 元の文字に戻す
cb->blockSignals(false); // イベント再開
これは、いろんな場面で必要になってくる定石?
QString oldText = cb->currentText();
{
QSignalBlocker blocker(cb); // ブロック開始
cb->clear();
cb->addItems(items);
cb->setCurrentText(oldText);
} // ブロック終了と同時に自動復帰
という方法もあるとのこと。
0 件のコメント:
コメントを投稿