C++ Qt设计模式笔记

8.1 lazy-fashion

  1. QObject的赋值(assignment)构造函数被设为私有,所以所有按值传递QObject及其子类的行为将会报错
  2. 不要在堆上创建QVariant相关的类型,如QString,QList,QHash, QImage,

8.2

  1. QObject 如果有parent的则new 后无需delete

8.4

  1. 加入Q_OBJECT后必须运行qmake重新生成makefile

8.6

  1. 一切QObject 对象在QApplication之后创建,在QApplication销毁之前销毁,因此static QObject 对象是不允许的
  2. 推荐有parent的QObject在堆上创建(在栈上存在会释放多次的隐患),无parent的QObject在栈上创建
  3. 不推荐直接delete QObjects(可能会导致信号未处理),推荐QObject::deleteLater()

9

  1. 子widget不能超出父widget的范围

17

  1. 耗时的多线程计算尽量采用QtConcurrent不用QThread
  2. 不要在非主线程的线程中直接访问GUI(包括QPixmap,读取QLineEditd 中的内容),用信号槽
  3. thread affinity,线程亲和性,每个QObject都由一个线程创建,创建线程负责执行slots
  4. QThread::exec() 线程进入事件循环
  5. QApplication::postEvent()和queued signal/slot可以用于线程间的通信
  6. 使用qRegisterMetaType()注册signal/slot中的参数类型

你可能感兴趣的:(qt)