QT 一个widget设置多个tooltips
来源:互联网 发布:优化媒体和代理媒体 编辑:程序博客网 时间:2024/06/05 21:23
学习自《Foundations of Qt Development》
效果图
针对一个widget设置多个不同的tooltips
,当鼠标移动到不同的区域能得到不同的提示。
自定义tooltip
事件: 因为没有现成的tooltipEvent
,所以需要自己来处理鼠标在不同位置的情况,使用QWidget::event()
调用QWidget::paintEvent()
来绘画四个矩形。
细节如下:
tipzone.h
#ifndef TIPZONE_H#define TIPZONE_H#include <QWidget>#include <QPainter>#include <QRect>#include <QEvent>class tipZone : public QWidget{ Q_OBJECT QRect redRec, blueRec, blackRec, whiteRec; int width, height;public: explicit tipZone(QWidget *parent = 0);signals:public slots:protected: bool event(QEvent * e); void paintEvent(QPaintEvent * event);};#endif // TIPZONE_H
tipzone.cpp
#include "tipzone.h"#include <QHelpEvent>tipZone::tipZone(QWidget *parent) : QWidget(parent){ QRect geo = this->geometry(); width = geo.width(); // don't use this->width height = geo.height(); // don't use this->height redRec = QRect(0,0,width/2,height/2); blueRec = QRect(width/2,0,width/2,height/2); blackRec = QRect(0,height/2,width/2,height/2); whiteRec = QRect(width/2,height/2,width/2,height/2);}bool tipZone::event(QEvent *e){ if(e->type() == QEvent::ToolTip){ QHelpEvent *helpEvent = static_cast<QHelpEvent *>(e); if(redRec.contains(helpEvent->pos())) setToolTip(QObject::tr("red")); else if(blueRec.contains(helpEvent->pos())) setToolTip(QObject::tr("blue")); else if(blackRec.contains(helpEvent->pos())) setToolTip(QObject::tr("black")); else if(whiteRec.contains(helpEvent->pos())) setToolTip(QObject::tr("white")); } return QWidget::event(e);}void tipZone::paintEvent(QPaintEvent *event){ QPainter *painter = new QPainter(this); painter->fillRect(redRec,Qt::red); painter->fillRect(blueRec,Qt::blue); painter->fillRect(blackRec,Qt::black); painter->fillRect(whiteRec,Qt::white);}
阅读全文
0 0
- QT 一个widget设置多个tooltips
- 设置Tooltips
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- Qt: 给Widget设置背景图片
- QT 自定义widget 背景图片设置
- Qt--设置Widget背景色
- qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新
- QT widget设置QT::FramelessWindowHint和Qt::WA_TranslucentBackground,会出现一个bug:在最小化还原时界面停止刷新
- ubuntu tooltips颜色设置
- 一个android应用向Home screen添加多个Widget
- 一个android应用向Home screen添加多个Widget
- linux route命令的使用详解
- 你的懂得的线程
- 问题2:Eclipse中Maven-pom聚合项目通过Tomcat自动部署步骤及部分问题
- 0708网络编程
- 算法概论第八章练习题 8.10
- QT 一个widget设置多个tooltips
- spring的事务传播行为及事务隔离级别
- Stiring,StringBuffer,StringBuilder的比较及其常用方法
- 每天10个Linux命令五
- hdu1002 A + B Problem II 大数
- EventBus(事件总线)
- 【HDU 3208】 组合数学+动态规划 湫秋系列故事——安排座位
- Linux下安装scikit-learn教程
- leetcode之Construct Binary Tree from Preorder and Inorder Traversal 问题