0

我有一个 QTableWidget,每当我用鼠标或键盘(制表键或箭头键)选择一行时,它就会发出 SIGNAL currentCellChanged 调用 SLOT 方法。是否可以找出使用了哪一个(鼠标或键盘)?

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 回答