个人技术分享

  1. Q_GADGET 这个宏是Q_OBJECT宏的弱化版本吧,不过它可以继续 使用属性机制、反射等特性,但是不能使用信号与槽
  2. QT_INCLUDE_COMPAT 兼容版本
  3. QT_BEGIN_NAMESPACE 防止命名污染
  4. Q_GUI_EXPORT 为了实现跨平台以及插件
  5. Q_FLAG(RenderHint),Q_DECLARE_FLAGS(RenderHints, RenderHint)
    Q_FLAG(RenderHints)
    就是你可以更方便的使用标志组,比如逻辑或把Set(Qt::A|QT::B)类似这样
  6. explicit是防止隐式转换的
class MyClass {
public:
    explicit MyClass(int value) {
        // 构造函数实现
    }
};

void doSomething(MyClass obj) {
    // 处理 MyClass 对象
}

int main() {
    int i = 10;
    // 这将导致编译错误,因为 MyClass 的构造函数是 explicit 的
    // doSomething(i);
}
  1. inline关键字,这个主要为了减少堆栈的访问,提升性能,最好是用于几行代码的地方,没有while for dowhile循环以及递归,最好实际测试一下吧
  2. const关键字 https://blog.csdn.net/xingjiarong/article/details/47282255