默认的QTableView若需要监听点击单元格消息,使用信号槽绑定如下信号:
void clicked(const QModelIndex &index) override;
void doubleClicked(const QModelIndex &index) override;
如果要实现监听右键点击单元格消息,则需要实现一个继承自QTableView的新类,重写该函数:
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
下面简单实现下QTableView的派生类,重写mousePressEvent消息,监听左右键以及双击单元格的消息
TableView.h文件
#ifndef TABLE_VIEW_H
#define TABLE_VIEW_H
class TableView: public QTableView {
public:
explicit TableView(QWidget *parent=0);
~TableView();
protected:
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
};
#define
TableView.cpp文件
#include "TableView.h"
TableView::TableView(QWidget *parent) :QTableView(parent){
}
TableView::~TableView{
}
void TableView::mousePressEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
QTableView::mousePressEvent(event);
// 左键点击的单元格
QModelIndex index = currentIndex();
// 处理左键事件
}
if (event->button() == Qt::RightButton)
{
QTableView::mousePressEvent(event);
QModelIndex index = currentIndex();
// 处理右键事件
}
if (event->type() == QEvent::MouseButtonDblClick && event->button() == Qt::LeftButton)
{
QTableView::mousePressEvent(event);
QModelIndex index = currentIndex();
// 处理鼠标双击事件
}
}