由于项目需要开始转型学习C++,GUI使用QT进行开发,开发过程中踩了不少坑,但是也积累了些宝贵经验,在这儿记录一下,希望能帮到需要的朋友。

1、设置无边框对话框

//设置对话框属性
setWindowFlags(Qt::FramelessWindowHint|Qt::Tool);
setAttribute(Qt::WA_TranslucentBackground);
setMouseTracking(true);

2、安全释放指针

//安全释放指针
#if ! defined(SAFE_DELETE)
# define SAFE_DELETE(p)do{if(p!=Q_NULLPTR){deletep;p=Q_NULLPTR;}}while(0)
#endif
//安全释放数组指针
#if ! defined(SAFE_DELETE_ARRAY)
# define SAFE_DELETE_ARRAY(p)do{if(p!=Q_NULLPTR){delete[]p;p=Q_NULLPTR;}}while(0)
#endif

3、如果引用的windows的api - 编译时提示无法解析外部符号

#ifdef Q_OS_WIN
#pragma comment(lib, "user32.lib")
#include <qt_windows.h>
#endif

4、屏蔽编译时无影响的警告信息

//编译时屏蔽警告4705
#pragma warning(disable:4705)

5、QT5 connect 的各种重载形式

//QT5 connect 的5种重载形式
QMetaObject::Connection connect(const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType);
QMetaObject::Connection connect(const QObject *, const QMetaMethod &, const QObject *, const QMetaMethod &, Qt::ConnectionType);
QMetaObject::Connection connect(const QObject *, const char *, const char *, Qt::ConnectionType) const;
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction, const QObject *, PointerToMemberFunction, Qt::ConnectionType)
//匿名函数方式连接
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction, Functor);
//Qt5最常用的连接方式
connect(sender,  signal, receiver, slot);

6、通过匿名函数,监控对象何时被销毁(可通过该方法了解QT对象创建及销毁机制)

QLabel *label = new QLabel("Hello, world");
//设置该属性后,该对象会由QT进行释放,否则需要手动释放
label->setAttribute(Qt::WA_DeleteOnClose);
label->show();
QObject::connect(label, &QLabel::destroyed, [=]()
{qDebug() << QDateTime::currentDateTime().toString()  << "QLabel 对象被销毁!";
});

持续更新中.....

如果你觉得对你有帮助,请帮忙点个赞!3Q!

转载于:https://www.cnblogs.com/brucezhang80/p/qt_code_snippets.html

QT 实用代码片段 (持续更新)相关推荐

  1. M通用版代码规范 - 持续更新

    文章目录 M通用版代码规范 - 持续更新 变量 方法 类 锁 事务 陷阱 格式 空行 注释 M通用版代码规范 - 持续更新 变量 代码中的命名均不能$.#等特殊符号开始或结束,因为$.#等是系统方法. ...

  2. 【第十一届泰迪杯数据挖掘挑战赛】A 题:新冠疫情防控数据的分析 思路+代码(持续更新)

    [第十一届泰迪杯数据挖掘挑战赛]A 题:新冠疫情防控数据的分析 思路+代码(持续更新) 问题背景 解决问题 代码下载 数据分析 Task1 Task2 Task 3 问题背景 自 2019 年底至今, ...

  3. golang中出于性能考虑的那些实用代码片段 |字符串篇

    出于性能考虑的那些实用代码片段 |字符串篇 在我们编程时,总是需要考虑性能方面的问题,这既能降低成本,又能提高用户的体验.好的性能的代码总是有好处的. 字符串 字符串替换/修改 当我们需要修改或替换某 ...

  4. Android实用代码(不定期更新)

    Android实用代码七段(一) 一抹火焰 整理(不定期更新) 前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明: 欢迎转载,但请保留文章原始出处:)  博客园 ...

  5. FC金手指代码大全·持续更新-亲测可用-FC 经典游戏完整可用的金手指大全---持续更新,偶尔玩玩经典回味无穷,小时候不能通关的现在通通通关一遍

    FC 经典游戏完整可用的金手指大全-持续更新,偶尔玩玩经典回味无穷,小时候不能通关的现在通通通关一遍 2021年5月11日更新: 每次翻金手指一些垃圾小网站标题党吸引进去吓一大堆木马什么也没有,什么x ...

  6. 商业数据分析模型及其核心Python代码_持续更新

    商业数据分析模型_持续更新 一.AARRR模型 二.PEST模型 理论 医美行业应用案例 三.RFM模型 理论 Python实战_核心指标计算 四.SWOT模型 五.5W1H模型 六.流程拆解法 七. ...

  7. C#程序员经常用到的10个实用代码片段

    转载地址:http://www.codeceo.com/article/10-csharp-code-spinet.html 如果你是一个C#程序员,那么本文介绍的10个C#常用代码片段一定会给你带来 ...

  8. 12306抢票系统(框架+代码)- 持续更新

    文章目录 一.框架展示(后续将提供源码) 二.界面展示 三.过程及结果展示 12306抢票系统(登录功能-二维码+账号密码)---------- 点击跳转 一.框架展示(后续将提供源码)    首先在 ...

  9. 基于opencv和QT的摄像头采集代码( GoQTtemplate3持续更新)

    在Linux操作系统上,编写带界面的图像处理程序,选择opencv+QT是一种很好的选择.GoQTtemplate3是我为编写Linux下图像处理程序实现的框架,希望能够为大家解决Linux环境下桌面 ...

最新文章

  1. jenkins实例似乎已离线
  2. 乐变黄杲:当前如何选择App热更新服务
  3. 在直播问题上,智能电视们不应该沉默
  4. 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber
  5. Apache服务器多站点配置
  6. 1.12 改善你的模型表现-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  7. python3爬虫(2)下载有固定链接的视频
  8. 深入理解数据库核心技术
  9. 关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
  10. php 查询and or,php – SQL查询多个AND和OR不起作用
  11. SpringBoot使用AOP,PointCut表达式详解以及使用
  12. 乐优商城(12)--授权中心
  13. 太原理工大计算机专业几本,太原理工大学是几本 学生评价怎么样好不好(10条)...
  14. glusterfs创建分布式卷
  15. 出现Illegal invocation的报错
  16. 使用最简单的方法实现QQ登录
  17. DNS信息查询综合实验
  18. Cesium,ClippingPlanes,任意剪裁面对3DTiles剪裁
  19. BZOJ 1003 [SPFA][DP]
  20. Docker的原理,详细

热门文章

  1. linux中实现pxe的自动安装
  2. Cisco3750在多VLAN网络环境下DHCP的实现
  3. case when then else多个条件_SQL巡礼之CASE用法
  4. python编程之slice与indices函数用法
  5. 如何在 Linux下进行文件切割操作?
  6. 概率密度变换公式 雅可比矩阵_干货 | 从雅可比矩阵你还能得到什么?(雅可比矩阵下篇)...
  7. 使用C++实现Socket编程传输文件
  8. c语言断链隐藏dll,通过断链隐藏模块(DLL)
  9. python实现密码的强度_字符串处理函数(二)python语言实现密码强度校验
  10. python人脸识别项目_基于Python与命令行人脸识别项目(系列二)