zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt之QTableWidget Tip气泡消息

Qt消息 气泡 QTableWidget Tip
2023-09-14 09:07:11 时间

概述

实现此功能需要做两步:

  1. 必须开启界面的鼠标捕获功能
  2. 接收QTableWidget的信号cellEntered(int,int):

代码示例:
.h

#ifndef MYTABLEWIDGET_H
#define MYTABLEWIDGET_H

#include <QWidget>
#include <QToolTip>


namespace Ui {
class MyTableWidget;
}

class MyTableWidget : public QWidget
{
    Q_OBJECT

public:
    explicit MyTableWidget(QWidget *parent = 0);
    ~MyTableWidget();
    
private slots:
    /**
     * @brief slotCellEnter 气泡消息显示槽函数
     * @param row           表格行
     * @param col           表格列
     */
    void slotCellEnter(int row,int col);
private:
    /**
     * @brief initConnect   初始化信号槽连接
     */
    void initConnect();

private:
    Ui::MyTableWidget *ui;
};

#endif // MYTABLEWIDGET_H


.cpp

#include "MyTableWidget.h"
#include "ui_MyTableWidget.h"

MyTableWidget::MyTableWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyTableWidget)
{
    ui->setupUi(this);
    //1. 必须开启界面的鼠标捕获功能
    ui->tableWidget->setMouseTracking(true);
                                            
    initConnect();
}

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

void MyTableWidget::initConnect()
{
	//2. 接收QTableWidget的信号cellEntered(int,int):当鼠标进入单元格的时候会触发此信号
    connect(ui->tableWidget, SIGNAL(cellEntered(int, int)), this, SLOT(slotCellEnter(int , int )));
}

void MyTableWidget::slotCellEnter(int row, int col)
{
    QTableWidgetItem *item = ui->tableWidget->item(row, col);
    if (item == NULL) {
        return;
    }
    QToolTip::showText(QCursor::pos(), item->text());
}


运行效果图
在这里插入图片描述