Qt :: QTableWidget:SIGNAL currentCellChanged:鼠标和键盘之间不同

时间:2013-06-12 08:55:30

标签: c++ qt

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

1 个答案:

答案 0 :(得分:1)

我假设您使用的是常规Designer表单类,表格小部件是该表单的一部分。

在表单类的构造函数中,您应该这样做:

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

eventFilter方法添加到您的课程中(重新实现虚拟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变量的值,以找出使用的控件。