Qt5制作鼠标悬停显示Hint的ToolTip

更新时间:2023-06-15 00:06:33 阅读: 评论:0

Qt5制作⿏标悬停显⽰Hint的ToolTip
在⽇常⽣活中的使⽤的软件中,我们经常会遇到这样的情况。
我们在⽹页上,有些⽹页链接的⽂字(⽐如⽂章标题,知乎问题标题,百度的词条等)因为太长了,⽽显⽰不出来,但是⿏标悬停在上⾯的时候就可以显⽰出来。
我们在QQ上或者某些输⼊框内,我们不知道应该输⼊什么内容,但是⿏标如果悬停在输⼊框内的时候,会产⽣⼀个友好信息的hint。
实现⽅法,就是我们今天的ToolTip设置。
代码如下:
ItemWidget.h
#ifndef ITEMWIDGET_H
#define ITEMWIDGET_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
美女坐爱#include <QVBoxLayout>
#include <QHBoxLayout>
//class CLabel;
class ItemWidget : public QWidget
{
Q_OBJECT
public:
explicit ItemWidget(QWidget *parent = 0);
void tText(QPixmap pixmap, QString name, QString info);
void tText(QString info);
signals:
public slots:
private:
QLabel *labelIcon;
QLabel *labelName;
QLabel *labelInfo;
QHBoxLayout *horLayout;
中发发型图片
QVBoxLayout *verlayout;
protected:
bool event(QEvent *e);
};
#endif // ITEMWIDGET_H
ItemWidget.cpp
#include "itemwidget.h"
#include "global.h"
#include "ctooltip.h"
#include <QEvent>
#include <QCursor>
ItemWidget::ItemWidget(QWidget *parent) :
QWidget(parent)
{
labelIcon = new QLabel(this);
labelName = new QLabel(this);
labelName->tStyleSheet("QLabel{color: green; font: 13pt bold;}");
labelInfo = new QLabel(this);
labelInfo->tStyleSheet("QLabel{color: gray;}");
verlayout = new QVBoxLayout();
verlayout->tContentsMargins(0, 0, 0, 0);
verlayout->addWidget(labelName);
verlayout->addWidget(labelInfo);
horLayout = new QHBoxLayout(this);
horLayout->tContentsMargins(2, 2, 2, 2);
horLayout->addWidget(labelIcon, 1, Qt::AlignTop);
horLayout->addLayout(verlayout, 4);
}
void ItemWidget::tText(QPixmap pixmap, QString name, QString info) {
labelIcon->tPixmap(pixmap);
labelName->tText(name);
labelInfo->tText(info);
}
室内种植// 测试⽤的
void ItemWidget::tText(QString info) {
labelIcon->tText(info);
}
// ⿏标悬停的时候,显⽰当前⽤户简要信息
bool ItemWidget::event(QEvent *e) {
if (e->type() == QEvent::ToolTip) {
qDebug() << "tool tip show";
g_toolTip->showMessage(labelIcon->pixmap(),
labelName->text(),
labelInfo->text(),
QCursor::pos());
} el if (e->type() == QEvent::Leave) {
qDebug() << "tool tip leave";
渔家傲范仲淹
g_toolTip->hide();
}
return QWidget::event(e);
}
然后是CToolTip⾃定义样式部分:
CToolTip.h
#ifndef CTOOLTIP_H
#define CTOOLTIP_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
class CToolTip : public QWidget
{
Q_OBJECT
public:
explicit CToolTip(QWidget *parent = 0);
取得成绩
void showMessage(const QPixmap *pixmap, QString name, QString info, QPoint point);
void showMessage(const QPixmap *pixmap, QPoint point);
signals:
public slots:
private:
QLabel *labelIcon;
QLabel *labelName;
上映QLabel *labelInfo;
QHBoxLayout *horLayout;
QVBoxLayout *verlayout;
QGroupBox *groupBox;
protected:
void hoverEvent(QHoverEvent *);
};
#endif // CTOOLTIP_H
CToolTip.cpp
#include "ctooltip.h"
#include <QDebug>
#include <QApplication>
爱国歌#include <QDesktopWidget>
CToolTip::CToolTip(QWidget *parent) :
QWidget(parent)
{
this->tWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
this->resize(200, 100); ;
this->tObjectName("CToolTip");
this->tStyleSheet("QWidget#CToolTip {border: 2px solid green; background-color: skyblue;}");
groupBox = new QGroupBox(this);
groupBox->tGeometry(10, 10, 180, 80);
groupBox->tTitle("⽤户信息");
labelIcon = new QLabel(groupBox);
简笔画大全动物
labelName = new QLabel(groupBox);
labelInfo = new QLabel(groupBox);
verlayout = new QVBoxLayout();
verlayout->tContentsMargins(0, 0, 0, 0);
verlayout->addWidget(labelName);
verlayout->addWidget(labelInfo);
horLayout = new QHBoxLayout(groupBox);
horLayout->tContentsMargins(10, 10, 10, 10);
horLayout->addWidget(labelIcon, 1, Qt::AlignTop);
horLayout->addLayout(verlayout, 4);
}
// 显⽰ToolTip消息
void CToolTip::showMessage(const QPixmap *pixmap, QString name, QString info, QPoint point) {    labelIcon->tPixmap(*pixmap);
labelName->tText(name);
labelInfo->tText(info);
// 重新定义CToolTip的坐标
int rectX;
int rectY;
if (() < 200) {
rectX = () + 10;
} el {
rectX = () - 240;
}
rectY =  ();
move(QPoint(rectX, rectY));
QWidget::show();
}
/
/ 显⽰ToolTip消息
void CToolTip::showMessage(const QPixmap *pixmap, QPoint point) {
labelIcon->tPixmap(*pixmap);
labelName->tText("⾃⼰想办法获取");
labelInfo->tText("⾃⼰动⼿,丰⾐⾜⾷");
// 此处可以作为QToolTip样式进⾏显⽰
move(point);
QWidget::show();
}
// 当⿏标进⼊事件时,让界⾯隐藏掉
void CToolTip::hoverEvent(QHoverEvent *) {
hide();
}
当然当然,在⼤多数的组件上⾯都有⼀个成员函数tToolTip(QSTring& ..)
这个就可以实现简单的友好信息提⽰功能了。

本文发布于:2023-06-15 00:06:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/956197.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:标题   框内   样式   信息   定义   悬停
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图