0

マウスまたはキーボード (タブまたは矢印キー) で行を選択するたびに、SLOT メソッドを呼び出す SIGNAL currentCellChanged を発行する QTableWidget があります。どちらが使用されたか (マウスまたはキーボード) を調べることは可能ですか?

4

1 に答える 1

1

通常の Designer フォーム クラスを使用しており、テーブル ウィジェットはそのフォームの一部であると仮定します。

フォームクラスのコンストラクターでは、次のことを行う必要があります。

ui->tableWidget->viewport()->installEventFilter(this);

クラスにメソッドを追加eventFilterします ( virtual を再実装しますQObject::eventFilter):

bool MyForm::eventFilter(QObject* object, QEvent* event) {
  if (object == ui->tableWidget->viewport()) {
    if (event->type() == QEvent::KeyPress) {
      method = method_keyboard;
    } else if (event->type() == QEvent::MouseButtonPress) {
      method = method_mouse;
    }
  }
  return false;
}

スロットでは、method変数の値をチェックして、どのコントロールが使用されたかを調べることができます。

于 2013-06-12T09:33:33.307 に答える