在QTableView未使用的区域中双击

时间:2014-07-08 18:43:22

标签: c++ mouseevent double-click qtableview qt4.8

我的应用程序以空表开始,我想要使用不同的方法来添加项目。一个应该是双击未被任何单元格占用的表的未使用区域(或“背景”)。双击单元格时,我想要默认行为。

我已经找到了通过在QAbstractScrollArea::mouseDoubleClickEvent()课程中重新实施TestTable方法来实现此目的的方法:

#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,有更优雅的方法吗?
  • 我不知道我当前实施的任何限制。有明显的警告吗?

1 个答案:

答案 0 :(得分:0)

如果您不想继承QTableView,请尝试installEventFilter