本文共 1002 字,大约阅读时间需要 3 分钟。
qApp宏返回指向QApplication的单例
#define qApp (static_cast(QCoreApplication::instance()))
模型是应用程序对象、视图是它的屏幕显示、控制器定义了用户界面对用户输入的反应。
Qt的模型视图框架是经典的MVC模型,可以参考QListWidget、QTableWidget、QTreeWidget的源码。反射就是指对象成员的自我说明。
Qt元对象模式就是反射模式。QObject拥有QMetaObject、QMetaProperty类就能实现反射模式。命令模式:把操作封装成具有公共执行接口的对象。这样就可以把操作放到一个队列中,可以实现取消已经执行的操作。
Qt中QUndoCommand、QRunnable、QAction可以看成是设计模式。MonoState模式和单例模式相似也是一种保证单一性的模式。单例模式是通过将默认构造函数声明为private限制客户端程序对类的直接new创建实例化,并使用static(类属)的方式来保证类的对象单一,而MonoState模式却是将它的构造函数声明为public,而将类中所有的字段声明为static。换句话说,MonoState并不限制创建对象的个数,但是它的状态却只有一个状态。
Qt中QSetting就是MonoState模式的一种实现。QSetting常用于保存和恢复程序状态。观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。
Qt中事件循环、信号和槽、视图模型都可以视为观察者模式。其实事件循环是真正的观察者模式,信号和槽由事件实现、视图模型由信号和槽实现。Qt中由QObject实现的父子类就是组合模式。
享元模式(Flyweight Pattern)为了避免对同一个对象的多个副本进行存储,使用一个轻量级的类对其进行封装,指向共享的数据,这种类的实现方法就是享元模式。
Qt支持隐式共享、写时复制就是享元模式转载地址:http://hdmei.baihongyu.com/