美文网首页
QT 实用代码片段 (持续更新)

QT 实用代码片段 (持续更新)

作者: 布鲁斯张 | 来源:发表于2017-11-01 14:03 被阅读8次

由于项目需要开始转型学习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

#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!

相关文章

网友评论

      本文标题:QT 实用代码片段 (持续更新)

      本文链接:https://www.haomeiwen.com/subject/dpiwpxtx.html