QToolTip+QSS

QToolTip本质上只是一个调用者,被调用的其实是一个被设置了Qt::ToolTip标志的QLabel,而且它比QLabel多了一个QSS属性:
opacity气泡整体的透明度

富文本显示

因为QLabel本身是支持富文本的,所以气泡也支持富文本也不足为奇。我们来看几个示例

啤酒是一个正常的文本:

啤酒

饮料显示了一个图片:

<html><head/><body> <p><img src=":/images/26.png"/></p> </body></html>

矿泉水显示了很大的字

<html><head/><body> <p><span style=" font-size:72pt; font-weight:600;">矿泉水</span></p> </body></html>

小推车售卖员显示比较长的一段字 \n可以用来手动换行

啤酒饮料矿泉水,花生瓜子八宝粥。来,腿收一下哈!\n啤酒饮料矿泉水,红茶绿茶八宝粥,前面的让一让哈!

简单样式

QToolTip { background-color: #ccc; color: #ffffff; border: 1px solid #555555; border-radius: 5px; padding: 5px 10px; font-size: 13px; opacity: 120; }

可以看到,虽然加了opacity属性,但是实际没啥效果呀~ (再次强调,本豆用的是Qt5.12.10版本,因为原来在其它的Qt版本上用了,是有效果的,不确定是不是版本问题),既然如此我们只好另辟蹊径了。

class ToolTipFilter : public QObject { Q_OBJECT protected: bool eventFilter(QObject* obj, QEvent* event) override { if (event->type() == QEvent::ToolTip) { QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event); QWidget* w = qobject_cast<QWidget*>(obj); if(w && !w->toolTip().isEmpty()) { QToolTip::showText(helpEvent->globalPos(), w->toolTip()); for(auto widget : qApp->topLevelWidgets()) { if(widget->objectName() == "qtooltip_label") { widget->setWindowOpacity(0.2); break; } } } else { QToolTip::hideText(); event->ignore(); } return true; } else { return QObject::eventFilter(obj, event); } } }; //再在main函数中加上这段 int main(int argc, char *argv[]) { QApplication a(argc, argv); a.installEventFilter(new ToolTipFilter); //<---关键代码 ... }

拦截全局的气泡消息,找到ObjectName为qtooltip_label的顶级Widget,为什么是qtooltip_label呢?因为本豆芽又去翻了源码。


然后强行给它加上0.2的透明度setWindowOpacity(0.2),这时候再看看我们的气泡就能老老实实的透明了。

完全自定义气泡

简单实现一个没有背景的气泡:

class CustomToolTip : public QLabel { public: explicit CustomToolTip(QWidget* parent = nullptr) : QLabel(parent, Qt::ToolTip | Qt::FramelessWindowHint) { setAttribute(Qt::WA_TranslucentBackground); setStyleSheet("color:red;"); } static CustomToolTip* instance; static void showToolTip(const QString& text, const QPoint& pos, QWidget *p) { delete instance; instance = new CustomToolTip(p); instance->setText(text); instance->move(pos + QPoint(0, 5)); instance->show(); } static void hideToolTip() { instance->hide(); } };

修改刚才拦截的代码,收到气泡事件时让它弹出我们自定义的气泡

class ToolTipFilter : public QObject { Q_OBJECT protected: bool eventFilter(QObject* obj, QEvent* event) override { if (event->type() == QEvent::ToolTip) { QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event); QWidget* w = qobject_cast<QWidget*>(obj); if(w && !w->toolTip().isEmpty()) { // QToolTip::showText(helpEvent->globalPos(), w->toolTip()); // for(auto widget : qApp->topLevelWidgets()) // { // if(widget->objectName() == "qtooltip_label") // { // widget->setWindowOpacity(0.2); // break; // } // } CustomToolTip::showToolTip(w->toolTip(), helpEvent->globalPos(), w); } else { // QToolTip::hideText(); CustomToolTip::hideToolTip(); event->ignore(); } return true; } else { return QObject::eventFilter(obj, event); } } };

效果是有了,但是我们的这个气泡比官方的气泡效率要低,只是出于演示目的所以没有做优化,有需要的小伙伴可以参考官方的代码自行实现下,或者直接用AI生成一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1167949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于可变形自注意力的YOLOv11:目标检测性能优化实践

文章目录 **目标检测性能革新:基于可变形自注意力机制的YOLOv11深度优化实战** **第一章:解锁新一代视觉Transformer的核心——可变形自注意力** **第二章:从零构建——高效开发环境与数据准备** **第三章:核心技术实现——为YOLOv11注入“智能聚焦”模块** **第四章:模型…

无感化签到监测与自动告警系统源码,及时传递安全异常信号

温馨提示&#xff1a;文末有资源获取方式在独居人群日益增多的当下&#xff0c;个人安全已成为备受关注的社会议题。我们为您带来一套专为独居场景设计的轻量化安全工具系统源码&#xff0c;该系统以其简洁高效的设计理念&#xff0c;构建了一套无感化安全防护机制&#xff0c;…

*目标检测性能革新:基于可变形自注意力机制的YOLOv11深度优化实战**

文章目录 **目标检测性能革新:基于可变形自注意力机制的YOLOv11深度优化实战** **第一章:解锁新一代视觉Transformer的核心——可变形自注意力** **第二章:从零构建——高效开发环境与数据准备** **第三章:核心技术实现——为YOLOv11注入“智能聚焦”模块** **第四章:模型…

个人云盘|基于springboot + vue个人云盘系统(源码+数据库+文档)

个人云盘 目录 基于springboot vue个人云盘系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue个人云盘系统 一、前言 博主介绍&#xff1a;✌️大…

健身房管理|基于springboot + vue健身房管理系统(源码+数据库+文档)

健身房管理 目录 基于springboot vue健身房管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue健身房管理系统 一、前言 博主介绍&#xff1a…

《创业之路》-865-如何利用下述分析方法找到并提前布局未来有爆发性潜力的公司:四阶价值流 × 商业模式画布 × 产品生命周期 × 创新 × 技术曲线 × 第二增长曲线 × 上中下游生态?

七维爆发力评估模型&#xff1a;提前布局未来10倍增长公司的实战指南核心理念&#xff1a;爆发性公司 技术曲线爬升期 价值流关键卡位 第二曲线已验证 生态位不可替代 最佳布局时点 技术低谷期&#xff08;Gartner曲线"幻灭谷底"&#xff09; 主曲线达峰前2年一…

计算机毕业设计Hadoop+Hive+Spark机票价格预测 机票可视化大屏 大数据毕业设计(源码+文档+PPT+ 讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 技术范围&#xff1a;Sprin…

论文“双重焦虑”?别慌!降重与降AI痕迹的终极指南与利器分享

又到了一年的毕业季&#xff0c;对于无数莘莘学子而言&#xff0c;完成一篇符合学术规范的毕业论文是走出校园前的最后一道&#xff0c;也往往是最令人头疼的关卡。除了内容的创新与深度&#xff0c;如今大家还普遍面临着两大“技术性”难题&#xff1a;查重率过高和AI生成痕迹…

基于Python 企业人力资源管理系统(源码+数据库+文档)

企业人力资源管理 目录 基于PythonDjango企业人力资源管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango企业人力资源管理系统 一、前言 博主介绍…

基于Python医院信息管理系统(源码+数据库+文档)

医院信息管理 目录 基于PythonDjango医院信息管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango医院信息管理系统 一、前言 博主介绍&#xff1a…

万字长文!开题报告保姆级攻略,让你的论文赢在起跑线

对于即将毕业的同学来说&#xff0c;写论文最头疼的环节&#xff0c;可能不是正文撰写&#xff0c;而是 开题报告。这一纸报告&#xff0c;看似简单&#xff0c;实则决定了你未来几个月的科研方向、工作量甚至最终的论文质量。很多同学都曾在这里卡壳&#xff0c;反复修改&…

基于Python 企业员工管理系统(源码+数据库+文档)

企业员工管理 目录 基于PythonDjango企业员工管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango企业员工管理系统 一、前言 博主介绍&#xff1a…

Hippo通路激酶LATS1/2(Ser909/872)如何调控肠道干细胞的命运与Wnt信号?

一、肠道稳态的维持依赖于哪些核心信号网络的交互&#xff1f;肠道上皮是体内更新最迅速的组织之一&#xff0c;其动态平衡严格依赖于肠道干细胞&#xff08;ISCs&#xff09;的精确调控。ISC的自我更新、增殖与分化受到一系列复杂且相互关联的信号通路的共同控制&#xff0c;其…

别用手工磨问卷了!AI辅助设计,让你的毕业论文问卷又快又科学

还在为毕业论文的调查问卷发愁吗&#xff1f;你是不是也经历过这样的夜晚&#xff1a;面对空白文档&#xff0c;绞尽脑汁却不知从何问起&#xff1b;题目设计出来总觉得不专业&#xff0c;担心导师质疑信效度&#xff1b;辛苦收集几百份数据&#xff0c;分析时才发现问题设置有…

免疫球蛋白G3(IgG3)如何通过干扰B细胞受体功能调控HIV感染者的免疫应答?

一、B细胞受体信号在适应性免疫应答中扮演何种核心角色&#xff1f;B细胞是适应性免疫系统的关键效应细胞&#xff0c;通过其表面的B细胞受体&#xff08;BCR&#xff09;特异性识别并结合外来抗原&#xff08;如病毒、细菌&#xff09;。这种结合会触发BCR介导的信号级联反应&…

搞定毕业设计和实习报告,可以很简单?

又到一年毕业季&#xff0c;毕业论文和实习报告的写作压力&#xff0c;成为许多高校毕业生面临的双重挑战。深夜对着空白文档发呆&#xff0c;反复修改仍觉结构混乱、内容空洞——这几乎是每个毕业生的共同记忆。写论文任务书时&#xff0c;对研究路径一头雾水&#xff1b;记录…

NF-κB信号通路中p105/p50的生成与调控机制是什么?

一、NF-κB通路为何是细胞应激与免疫应答的核心枢纽&#xff1f;核因子-κB&#xff08;NF-κB&#xff09;信号通路是细胞内一个高度保守且至关重要的转录调控网络。它能够响应多种胞内外刺激&#xff0c;包括促炎细胞因子、病原体相关分子模式&#xff08;如细菌脂多糖&#…

警情数据可视化分析|基于Python + vue警情数据可视化分析系统(源码+数据库+文档)

警情数据可视化分析 目录 基于PythonDjango超市在线销售与分析系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango警情数据可视化分析系统 一、前言 博…

mTOR(Ser2448)磷酸化如何揭示其信号网络的调控核心?

一、mTOR复合物如何作为细胞代谢与生长的中央控制器&#xff1f;哺乳动物雷帕霉素靶蛋白&#xff08;mTOR&#xff09;是一种在进化上高度保守的丝氨酸/苏氨酸蛋白激酶&#xff0c;它是细胞感知并整合营养、能量、生长因子及应激信号&#xff0c;进而调控细胞生长、增殖、自噬、…

基于Python + Django医院信息管理系统(源码+数据库+文档)

医院信息管理 目录 基于PythonDjango医院信息管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango医院信息管理系统 一、前言 博主介绍&#xff1a…