封装一些常用的 qt 控件
在 qt 中需要做 toast 效果和图片 tip 效果,故开发了下面一个类
后续会继续添加一些常用的控件
tool_tip.h
#include <qlabel.h>
#include <qlayout.h>
#include <qwidget.h> class ToolTips : public QWidget {
Q_OBJECT public:
enum TipTypes {
kNone = 0,
kToastTip,
kPictureTip,
}; public: // NOLINT
explicit ToolTips(QWidget* parent = nullptr, TipTypes tip_type = kNone);
~ToolTips();
Q_DISABLE_COPY(ToolTips) void ShowToastTip(const QString& tip, const int time = 3000); protected:
void CreateToastTip();
void CreatePictureTip(); void HideTip(); private:
void Init(); QWidget* toast_tip_widget_;
QHBoxLayout* toast_tip_layout_;
QLabel* toast_tip_; QWidget* picture_tip_widget_;
QHBoxLayout* picture_tip_layout_;
QLabel* picture_tip_; TipTypes tip_type_; QString PictureTipText = "图片提示"; QString ToastTipType = {
"QLabel {"
"background-color: #7f7f7f;"
"border-radius: 4px;"
"color: #ffffff;"
"}"}; // 重写 mousePressEvent 事件
void mousePressEvent(QMouseEvent* event) override;
};
tooltip.cpp
#include "tool_tip.h" #include <qevent.h>
#include <qimagereader.h>
#include <qtimer.h> ToolTips::ToolTips(QWidget* parent, TipTypes tip_type)
: QWidget(parent), tip_type_(tip_type) {
Init();
// 默认隐藏 toast 提示
HideTip();
} ToolTips::~ToolTips() {} void ToolTips::Init() {
switch (tip_type_) {
case kToastTip:
CreateToastTip();
break;
case kPictureTip:
CreatePictureTip();
break;
default:
break;
}
} void ToolTips::CreateToastTip() {
toast_tip_widget_ = new QWidget(this);
toast_tip_widget_->setObjectName(QStringLiteral("toast_tip_widget"));
toast_tip_layout_ = new QHBoxLayout(toast_tip_widget_);
toast_tip_layout_->setObjectName(QStringLiteral("toast_tip_layout"));
toast_tip_ = new QLabel(toast_tip_widget_);
toast_tip_->setObjectName(QStringLiteral("toast_tip"));
QFont toast_tip_font = toast_tip_->font();
toast_tip_font.setPointSize(14 /** scale*/); // scale: 对于 dpi,这边需要乘以相应的屏幕缩放比
toast_tip_->setFont(toast_tip_font);
toast_tip_->setStyleSheet(ToastTipType);
toast_tip_->setAlignment(Qt::AlignCenter);
toast_tip_layout_->addWidget(toast_tip_);
toast_tip_layout_->setContentsMargins(0, 0, 0, 0); toast_tip_layout_->setSpacing(0);
this->setLayout(toast_tip_layout_);
} // TODO: 设计为通用的图片控件
void ToolTips::CreatePictureTip() {
picture_tip_widget_ = new QWidget(this);
picture_tip_widget_->setObjectName(QStringLiteral("picture_tip_widget"));
picture_tip_layout_ = new QHBoxLayout(picture_tip_widget_);
picture_tip_layout_->setObjectName(QStringLiteral("picture_tip_layout"));
picture_tip_ = new QLabel(this);
picture_tip_->setObjectName("picture_tip");
picture_tip_->setFixedSize(12, 12 /** scale*/);
picture_tip_->setScaledContents(true);
QImageReader pic(":/icon/picture_tip.png", "png");
pic.setAutoDetectImageFormat(false);
picture_tip_->setPixmap(QPixmap::fromImageReader(&pic));
picture_tip_->setToolTip(PictureTipText);
picture_tip_layout_->addWidget(picture_tip_);
picture_tip_layout_->setContentsMargins(0, 0, 0, 0); picture_tip_layout_->setSpacing(0);
this->setLayout(picture_tip_layout_);
} void ToolTips::ShowToastTip(const QString& tip, const int time) {
toast_tip_->setText(tip);
QTimer::singleShot(time, this, &QWidget::hide);
show();
} void ToolTips::HideTip() {
switch (tip_type_) {
case kToastTip:
hide();
break;
default:
break;
}
} void ToolTips::mousePressEvent(QMouseEvent* event) {
if (event->button() == Qt::LeftButton) {
if (tip_type_ == kPictureTip) {
// 针对图片控件的鼠标点击做出你需要的事件
}
event->accept();
}
QWidget::mousePressEvent(event);
}
封装一些常用的 qt 控件的更多相关文章
- Cocos2dx 把 glview 渲染到 Qt 控件上(Mac 环境)
本文原链接:http://www.cnblogs.com/zouzf/p/4423256.html 环境:Mac 10.9.2 Xcode5.1.1 Qt5.3 cocos2dx-2.2.4 ...
- 将webkit内核封装为duilib的浏览器控件
转载请说明出处,谢谢~~ 原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直 ...
- 常用的UI控件
关于本文:作为一名iOS软件工程师,熟练规范的使用常用的UI控件是必备的基础技能. 指示器(UIActivityIndicatorView)----转动的等待小菊花 提醒对话框(UIAlertView ...
- QT控件学习
一.QPushButton 1.设置背景色: ui->pushButton->setStyleSheet("background-color: rgb(170, 0, 255)& ...
- Qt控件精讲一:按钮
原地址:http://blog.csdn.net/yuxikuo_1/article/details/17397109 Qt Creater提供6种Button控件.如图1. Button控件介绍 控 ...
- Android常用酷炫控件(开源项目)github地址汇总
转载一个很牛逼的控件收集帖... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.Gri ...
- Android 常用炫酷控件(开源项目)git地址汇总
第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...
- C#搞跨平台UI,封装Cef作为Cpf的控件支持Windows,Linux,Mac
终于封装完成了,采用离屏渲染方式,支持JS和C#互相调用,C#方法自动绑定到JS里,中文输入有自动调整输入法位置. 基于开源的CefGlue 移植,本来想用CefSharp,不过这个里面有很多C++的 ...
- UWP开发必备:常用数据列表控件汇总比较
今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...
- Qt控件样式 Style Sheet Demo
迟来的笔记,作为一个程序员每日记事已养成习惯,离开许久,不知不觉已喜欢用文字表达对技术的热爱,学无止境! Qt – 一个跨平台应用程序和UI开发框架:它包括跨平台类库.集成开发工具和跨平台 IDE,使 ...
随机推荐
- [转帖]【VIM】多行缩进空格与删除
向前或向后缩进一个TAB 按ctrl + v组合键进入Visual Line模式,可使用方向键选择多行: 按<或>,进行向前或向后缩进tab. 缩进n个TAB,按n+<或> 多 ...
- [转帖]【SOP】最佳实践之 TiDB 业务写变慢分析
https://zhuanlan.zhihu.com/p/647831844 前言 在日常业务使用或运维管理 TiDB 的过程中,每个开发人员或数据库管理员都或多或少遇到过 SQL 变慢的问题.这类问 ...
- [转帖]AlertManager 配置邮箱告警
http://www.mydlq.club/article/126/ 2022-12-02 13:17:00KUBERNETESPROMETHEUSALERTMANAGER 文章目录 一.邮箱告警说明 ...
- 【转帖】FIO磁盘性能测试工具
https://www.jianshu.com/p/70b8c7d5d217 FIO工具介绍 FIO 工具是一款用于测试硬件存储性能的辅助工具,兼具灵活性.可靠性从而从众多性能测试工具中脱颖而出.磁盘 ...
- [转帖]SHELL—— awk两个特殊模式(BEGIN 和 END)及awk高级应用(条件判断、循环)
一.Awk 的两个特殊模式 BEGIN 和 END,BEGIN 被放置在没有读取任何数据之前,而 END 被放置在所有的数据读取完成以后执行 体现如下: BEGIN{}: 读入第一行文本之前执行的语句 ...
- 《Javascript高级程序设计》读书笔记——函数与闭包
函数与闭包 函数创建 创建函数有两种方式,第一种是函数声明.函数声明有一个很重要的特征就是函数声明提升(function declaration hoisting),意思是在执行代脚本前会先读取所有的 ...
- 两千字讲明白java中instanceof关键字的使用!
写在开头 在过往的内容中,我们讲了不少的Java关键字,比如final.static.this.super等等,Java中的关键字非常之多,下图是整理的关键字集合 而我们今天要学习的就是其中的inst ...
- 服务器重装ip未更改,ssh连不上(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED)
服务器重装ip未更改,ssh连不上 前言 原因 解决方法 服务器重装ip未更改,ssh连不上 前言 重装了虚拟机,ip还保留了,但是发现连不上了 @@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- 2.7 CE修改器:多级指针查找
在本步骤中,你需要使用多级指针的概念来查找健康值真正的地址并修改它.多级指针就是一个指针的指针,也就是第一个指针指向第二个指针,第二个指针指向第三个指针,以此类推,最终指向你想要访问的地址. 首先,你 ...
- Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式
目录 前言 相关技术简介 OpenAPI Swagger Springfox springdoc swagger2与swagger3常用注解对比 实现步骤 引入maven依赖 修改配置文件 设置api ...