Qt编程,最终实际上是C++编程,Qml虽然也是一种语言,但是还是资源性的辅助性的,主要是定义一些界面GUI的元素,一些元素特性,一些元素的事件,如clicked,还可以定一些property等,但最终都是为了C++界面逻辑实现上的调用。
C++中引入了一些设计模式在里面,比如sigleton
#define g_myGlobalClass (MyGlobalClass::instance())
这种方式很适合一些全局使用的类,全局类适合做一些共用功能,有点全局变量的意思,需要使用时,g_myGlobalClass 拿过来就可以使用,非常方便。
还有一个模式不得不说,那就是Q_D\Q_Q,也就是d_ptr \ q_ptr,其中d_ptr(主类中访问私有子类成员指针)q_ptr(私有数据类中访问主类指针),这个模式解决了QT 程序的二进制兼容性问题。我理解就是主类提供对外接口,比如setXXX的成员函数和onXXX的slot槽函数,而这些函数使用的变量都放在私有数据类里面,不做任何对外暴露。其定义模式如下:
定义在.h文件,可供外部调用
class MyWidgetPrivate;
class MyWidget : public QObject
{
Q_OBJECT
public:
explicit MyWidget(QObject *parent = nullptr);
void setMyWidgetObject(QObject* qmlObject);
public slots:
void