1, 防止头文件重复包含
#ifndef QOBJECT_H
#define QOBJECT_H
2, 条件编译
#ifndef QT_NO_QOBJECT
#endif
3, 前置声明类,用于类指针或引用的声明
class QEvent;
class QTimerEvent;
4, typedef 别名
typedef QList<QObject*> QObjectList;
5,类导出导入函数
# define Q_DECL_EXPORT __declspec(dllexport)
# define Q_DECL_IMPORT __declspec(dllimport)
6, 私有类
class Q_CORE_EXPORT QObjectData {
};
7,用于继承的纯虚析构函数
virtual ~QObjectData() = 0;
8, explicit
Q_INVOKABLE explicit QObject(QObject *parent=nullptr);
```
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。
9,虚成员函数,子类必须继承,也为虚函数。
virtual bool event(QEvent *event);
10, inline 内联函数,const函数表示该成员函数不会修改类的数据。否则会编译报错。 const *this;
inline bool isWidgetType() const { return d_ptr->isWidget; }
“`
11.,函数参数的默认参数
int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
12,STL
template
13, 类static函数,只属于类,用ClassName::FunName();调用。
static QMetaObject::Connection connect(const QObject *sender, const char *signal,
const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
14,const引用参数,常用
bool setProperty(const char *name, const QVariant &value);
15, friend
friend struct QMetaObject;