qt tableview 鼠标移动显示QToolTip

我的梦境 提交于 2019-12-02 14:47:38

QAbstractItemView 模型视图框架,鼠标移动显示坐标数值

#include "widget.h"
#include "ui_widget.h"
#include <QtDebug>
#include "tabledelegate.h"
#include <QAbstractItemModel>
#include <QToolTip>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    tableModel = new TableModel();  // Model
    ui->tableView->setModel(tableModel);    // View
    ui->tableView->setItemDelegate(new TableDelegate);  // Delegate
    ui->tableView->verticalHeader()->setDefaultSectionSize(20);
    ui->tableView->horizontalHeader()->setDefaultSectionSize(20);
    //connect(ui->tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(choseItem(QModelIndex)));
    tableModel->addElement();
    ui->tableView->viewport()->installEventFilter(this);//安装事件过滤器
    ui->tableView->viewport()->setMouseTracking(true);//true鼠标移动触发 false按下触发
}

Widget::~Widget()
{
    delete ui;
}

bool Widget::eventFilter(QObject *obj, QEvent *e)
{
    if(obj == ui->tableView->viewport())
    {
        if(e->type() == QEvent::MouseMove)
        {
            choseItem(ui->tableView->indexAt(ui->tableView->mapFromGlobal(QCursor::pos())));
        }
    }
    return QWidget::eventFilter(obj,e);
}

void Widget::choseItem(QModelIndex index)
{
    if(!index.isValid())
    return;
    QString text = QString("(%1,%2) %3").arg(QString::number(index.row()),QString::number(index.column()),index.data().toString());
    if(text.isEmpty())
    return;
    QToolTip::showText(QCursor::pos(),text);
}

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!