在QTableView的未使用区域中双击

Catch double click in QTableView's unused area

本文关键字:双击 区域 未使用 QTableView      更新时间:2023-10-16

我的应用程序从一个空表开始,我想实现不同的方法来添加项。应该通过双击表格中未被任何单元格占用的未使用区域(或"背景")来实现。当一个单元格被双击时,我想要默认的行为。

我已经找到了通过在我的TestTable类中重新实现QAbstractScrollArea::mouseDoubleClickEvent()方法来做到这一点的方法:

#include <QMouseEvent>
#include <QTableView>
class TestTable : public QTableView
{
  Q_OBJECT
  signals:
    void backgroundDoubleClickEvent(void);
  protected:
    void mouseDoubleClickEvent (QMouseEvent* e)
    {
      if (indexAt(e->pos()).isValid())
      {
          QTableView::mouseDoubleClickEvent(e);
      }
      else
      {
        e->accept();
        emit backgroundDoubleClickEvent();
      }
    }
};
  • 这工作,但有没有更优雅的方式做到这一点没有子类化QTableView ?
  • 我不知道我目前的实现有任何限制。有明显的警告吗?

如果您不想子类化QTableView,请尝试installEventFilter