【问题标题】:Catch double click in QTableView's unused area在 QTableView 的未使用区域捕获双击
【发布时间】:2020-07-07 17:46:12
【问题描述】:

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

我找到了通过在我的 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
  • 我不知道我当前的实现有任何限制。是否有明显的警告?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我会试试的,谢谢!它看起来有点复杂,我必须找出如何捕捉双击,但这并非完全遥不可及。
    猜你喜欢
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多