QTableView改变鼠标事件

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());
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在使用QTableView时鼠标滚动速度较慢,可能是因为QTableView中的数据量较大,导致滚动时需要进行大量的数据计算和绘制。这可能会导致滚动的性能下降。 以下是一些可以尝试的优化措施: 1. 使用模型索引:确保在QTableView中使用QAbstractItemModel的索引来访问和设置数据,而不是直接操作单元格。直接操作单元格可能会导致额外的数据计算和绘制。 2. 设置视图模式:根据实际需求,尝试不同的视图模式,如QTableView、QListView或QTreeView。不同的视图模式可能对滚动性能有不同的影响。 3. 延迟更新:可以尝试延迟更新视图,例如通过设置QAbstractItemModel的beginResetModel()和endResetModel()来延迟更新,以减少频繁的数据更新和绘制。 4. 预加载数据:如果可能,可以考虑预加载数据,以减少滚动时的数据计算和绘制。例如,在初始化时将一部分数据加载到内存中,并在滚动过程中使用已加载的数据。 5. 使用分页加载:如果数据量非常大,可以考虑使用分页加载的方式,只加载当前可见区域的数据,而不是一次性加载所有数据。 6. 考虑使用Qt的Graphics View框架:Qt提供了一个强大的Graphics View框架,可以用于创建自定义视图和模型。在一些情况下,使用Graphics View框架可能比QTableView更高效。 通过以上优化措施,你可以尝试提高QTableView滚动的性能。根据具体情况,可能需要结合多种优化手段来达到更好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值