Qt高级用法以及日志输出,持续更新

知识点1:类型转换(动态类型转换,静态类型转换)
动态类型转换使用dynamic_cast运算符进行,是程序在运行的过程中进行类型转换,转换不成功会返回空指针或者抛出异常。
动态转换示例代码:
                                   
打印结果:
         
静态转化示例代码: static_cast 运算符
     
结果是一样的,但是静态类型转换可能会 导致精度损失或不安全的转换,因此在使用时需要谨慎。
Qt元对象当中也有一个类似于动态类型转化qobject_cast(用于在对象的基类和派生类之间进行类型转换)
示例代码:
在这个示例中,我们创建了一个基类 Base 和一个派生类 Derived。然后我们尝试使用qobject_cast 将一个 Base 对象转换为 Derived 对象,
这应该会失败,因为 base 不是Derived 对象。同样地,我们将一个 Derived 对象尝试转换为 Base 对象,这应该会成功。
知识点2:Q_INVOKABLE宏的使用
不加 Q_INVOKABLE 也可以在信号槽中使用,但是这可能会带来一些限制。使用 Q_INVOKABLE 宏可以确保成员函数能够被正确地处理和调用,
尤其是在涉及到跨线程通信时。当使用 Qt 的信号槽机制时, Q_INVOKABLE 宏可以确保成员函数的调用符合 Qt 的元对象系统要求。这样,当
发出信号时,Qt 可以正确地查找和调用目标槽函数。虽然不使用 Q_INVOKABLE 也可以在信号槽中使用成员函数,但是这样可能会导致一些限
制和潜在的问题。例如,如果成员函数的参数类型不符合信号槽机制的要求,可能会导致无法正确连接信号和槽。因此,为了确保信号槽的正
常工作和最佳的代码可读性,建议在使用 Qt 的信号槽机制时,使用 Q_INVOKABLE 宏来标记可调用的成员函数。这个关键字在Qt库当中使用了
很多。
知识点3:QVariant的使用(非常好用的类)
它是一个通用的数据类型,可以用来存储各种类型的数据。它类似于 C++ 中的 union 数据类型,可以存储不同的数据类型,但每次 只能存储
一种类型。QVariant 支持的数据类型包括整数、浮点数、字符串、数组、字典等(太复杂和自定义类不ok)。
它提供了很多方法来操作和查询存储在其中的数据。
重点: 在信号和槽连接时,可以使用 QVariant 来传递参数。这样可以将不同类型的数据传递给槽函数,而不需要编写额外的转换代码。
QVariant代码示例:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值