QTableView 双击左键为选中并且可修改,单机右击为选中,单机左键没有反应
mytableview 实现了双击左键选中但是不可修改,右击可以进行编辑。
双击和单机都可以获取单元格的QModelIndex。
使用方法:在QT designer中创建一个QTableView ,提升为mytableview
.H文件
#ifndef MYTABLEVIEW_H
#define MYTABLEVIEW_H
#include<QTableView>
#include "QMouseEvent"
class mytableview : public QTableView
{
Q_OBJECT
public:
mytableview(QWidget *parent= nullptr);
protected:
void mousePressEvent(QMouseEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
signals:
void leftdoubleClicked(int row);
signals:
};
#endif // MYTABLEVIEW_H
.CPP
#include "mytableview.h"
mytableview::mytableview(QWidget *parent) :QTableView(parent)
{
}
void mytableview::mousePressEvent(QMouseEvent *event)
{
if( event->button()== Qt::RightButton)
{
setCurrentIndex(QModelIndex());
QTableView::mousePressEvent(event);//这里需要重新获取一次pressevent,否则获取不到currentIndex()
QModelIndex index=currentIndex();
this->edit(index);
}
if( event->button()== Qt::LeftButton)
{
setCurrentIndex(QModelIndex());
QTableView::mousePressEvent(event);//这里需要重新获取一次pressevent,否则获取不到currentIndex()
QModelIndex index=currentIndex();
}
}
void mytableview::mouseDoubleClickEvent(QMouseEvent *event)
{
setCurrentIndex(QModelIndex());
QTableView::mousePressEvent(event);//这里需要重新获取一次pressevent,否则获取不到currentIndex()
QModelIndex index=currentIndex();
emit leftdoubleClicked(index.row());
}