封装一些常用的 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,使 ...
随机推荐
- [转帖]Prometheus系列之Grafana 版本9.0.0 设置Email邮件报警实战
目录 1. 配置文件conf/defaults.ini修改 2. Grafana Web页面配置报警邮箱接收者 3. 创建Dashboard 4. 创建Alert的文件夹 5. 设置Notificat ...
- [转帖]ldconfig命令
https://linux265.com/course/linux-command-ldconfig.html ldconfig命令的作用主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文 ...
- [转帖]优化命令之sar——最牛命令
目录 一:sar命令概述 1.1sar概述 1.2sar常用选项 1.3常用参数 二:CPU资源监控 2.1整体CPU使用统计(-u) 2.2各个CPU使用统计(-P) 2.3将CPU使用情况保存到文 ...
- Linux与Windows系统字符集的简要学习
背景 最近同事反馈公司的产品再更新了mysql-8.0.31的驱动jar包后部分功能报错. 问题核心原因 研发这边石磊老师已经找到了. 结论是Mysql8.0.26之后的数据库驱动好像会识别操作系统的 ...
- linux时间和当前时间相关8小时问题
依次执行如下的代码: 1.更改时区 cp /usr/share/zoneinfo/GMT /etc/localtime ln -sf /usr/share/zoneinfo/Asia/Shanghai ...
- 在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升
在数据增强.蒸馏剪枝下ERNIE3.0模型性能提升 项目链接: https://aistudio.baidu.com/aistudio/projectdetail/4436131?contributi ...
- 【6】opencv采用映射技术实现鱼眼镜头校正和鱼眼镜头还原全景图。
相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...
- 苹果iOS 17.2年底推送:iPhone 15 Pro的自定义操作按钮功能升级
据报道,苹果会在年底推送iOS 17.2版本,新版系统将会修复iPhone 15系列WiFi速度慢的问题. 与此同时,iOS 17.2将会带来翻译功能,iPhone 15 Pro的自定义操作按钮切换到 ...
- JWT( JSON Web Token —— JSON Web 令牌 )的学习笔记
一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样: 1.用户向服务器发送用户名和密码. 2.服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色.登录时间等等. ...
- Kubernetes全栈架构师(Docker基础)--学习笔记
目录 Docker基础入门 Docker基本命令 Dockerfile用法 制作小镜像上 多阶段制作小镜像下 Scratch空镜像 Docker基础入门 Docker:它是一个开源的软件项目,在Lin ...