重写QTableView类解决鼠标单击、双击问题

问题描述:想通过鼠标的单击查看文件,双击支持修改。QTableView中没有区分点击一下,两下

解决方式:重写QTableView类

流程:新建一个TableView类文件,复制一下代码即可

TableView.h文件

class TableView : public QTableView
{
    Q_OBJECT
public:
    explicit TableView(QWidget *parent = 0);
protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);

signals:
    void leftClicked(const QModelIndex &index);
    void leftdoubleClicked();


};

TableView.cpp文件

TableView::TableView(QWidget *parent):QTableView(parent)
{
}
void TableView::mousePressEvent(QMouseEvent *event)
{
   if(event->button()==Qt::LeftButton)
   {
       setCurrentIndex(QModelIndex());
       QTableView::mousePressEvent(event);
       QModelIndex index=currentIndex();
       if(index.row()<0&&index.column()<0)
           return;
       emit leftClicked(index);
     //  qDebug()<<"左击一下";
   }
}
void TableView::mouseDoubleClickEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
       // qDebug()<<"左击两下";
        emit leftdoubleClicked();
    }

}

最后,提升窗口部件即可。

欢迎各位留言交流

你可能感兴趣的:(Qt)