Qt中GUI设计经常会使用到QTabaleWidget控件,有时Item中显示的文字内容比较多,如果设置Item过大的话,文字虽然可以显示出来,但是整个页面就会显示的Item比较少。所以为了多显示Item,每个Item的大小设置还是要适中一些,带来的问题就是每个Item中显示的内容不全。但是还必须要让用户了解每一个Item中的内容,所有为了方便显示其中的内容,我们可以借助于鼠标悬停事件显示表格中的内容(Tooltip)。
一.环境及适用范围
使用环境: QT版本: 5.12.4
适用控件:QTableWidget, QTableView, QTreeWidget, QListView等继承于QAbstractItemView可以使用。
二.实现方法
1. 开启鼠标捕获
必须开启控件的鼠标捕获功能:
tableWidget->setMouseTracking(true);//开启捕获鼠标功能
2. 接收和处理信号
接收QTableWidget的信号entered(QModelIndex):
connect(ui->tableWidget,SIGNAL(entered(QModelIndex)),this,SLOT(ShowTooltip(QModelIndex)));
void xxxx::ShowTooltip(QModelIndex index)
{
QToolTip::showText(QCursor::pos(),index.data().toString());
return ;
}
三. 具体源码
1. 头文件
private slots:
void ShowTooltip(QModelIndex index);
2. cpp文件
tableWidget->setMouseTracking(true);
connect(tableWidget, SIGNAL(entered(QModelIndex)), this, SLOT(ShowTooltip(QModelIndex)));
void MainWindow::ShowTooltip(QModelIndex index)
{
QToolTip::showText(QCursor::pos(),index.data().toString());
return ;
}