qt tableview 鼠標移動顯示QToolTip

QAbstractItemView 模型視圖框架,鼠標移動顯示座標數值
源碼:https://download.csdn.net/download/sinat_33859977/11930601

#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);
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章