文章目录
需求描述:鼠标 hover 在一个控件上时,展示设置好的气泡信息
Qt5之前的版本要设置气泡需要通过C++中其他的类库去实现,在Qt5中则已经实现了相关的Qt类。并且除了设置文字气泡之外,还可以通过重写 QToolTip
类实现自己需要的气泡样式。
从 Qt 5.9.9 已经支持 QToolTip
。基本所有继承于 QWidget
的组件都可以通过 setToolTip()
设置气泡信息。以下所展示的Qt基类都可以设置气泡信息。
- setToolTip: QAction QGraphicsItem QListWidgetItem QStandardItem QSystemTrayIcon QTableWidgetItem QTextCharFormat QTreeWidgetItem QWidget QWinThumbnailToolButton
- setToolTipDuration: QWidget
- setToolTipsVisible: QMenu
基本上所有继承于 QWidget
的Qt控件类都支持设置气泡,本文以 QLabel
和 QPushButton
为例演示文字气泡功能。
代码
代码很简单,在ui界面拖一个 QLabel
和一个 QPushbutton
即可,信号槽直接在ui界面右击转到槽即可。
#include "widget.h"
#include "ui_widget.h"
#include <QImage>
#include <QPixmap>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap img(":/Win11.jpg");
ui->label->setPixmap(img);
ui->label->setScaledContents(true);
ui->label->setToolTip(QString("壁纸《Win11.png》"));
ui->pushButton->setToolTip(QString("隐藏或显示图片"));
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
if(ui->label->isVisible())
ui->label->hide();
else
ui->label->setVisible(true);
}