QT 实用代码片段 (持续更新)
由于项目需要开始转型学习C++,GUI使用QT进行开发,开发过程中踩了不少坑,但是也积累了些宝贵经验,在这儿记录一下,希望能帮到需要的朋友。
1、设置无边框对话框
1 2 3 4 | //设置对话框属性 setWindowFlags(Qt::FramelessWindowHint|Qt::Tool); setAttribute(Qt::WA_TranslucentBackground); setMouseTracking( true ); |
2、安全释放指针
1 2 3 4 5 6 7 8 | //安全释放指针 #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 - 编译时提示无法解析外部符号
1 2 3 4 | #ifdef Q_OS_WIN #pragma comment(lib, "user32.lib") #include <qt_windows.h> #endif |
4、屏蔽编译时无影响的警告信息
1 2 | //编译时屏蔽警告4705 #pragma warning(disable:4705) |
5、QT5 connect 的各种重载形式
1 2 3 4 5 6 7 8 9 | //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对象创建及销毁机制)
1 2 3 4 5 6 7 8 | 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!
主要研究技术:C#网络通信、地图应用、物联网的研究及应用。
撰写人:布鲁斯张
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· Coze Studio:字节跳动 Coze 的开源版本来了!第一时间深度解析
· 一款超级经典复古的 Windows 9x 主题风格 Avalonia UI 控件库,满满的回忆杀!
· 我给 AI 接上了一个 C# 运行器,结果它学会了自己上网、调试代码
· AI再强大,也不如人类员工用的爽?
· 我只说需求,AI 全程托管,代码自己长出来了!