Qt/QML编程之路:设计模式(31)

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

相关推荐

  1. Qt/QML编程设计模式31

    2024-01-17 01:22:01       32 阅读
  2. 设计模式命令模式 ,Php高级编程

    2024-01-17 01:22:01       15 阅读
  3. 编程思想/oop设计模式

    2024-01-17 01:22:01       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-17 01:22:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-17 01:22:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-17 01:22:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-17 01:22:01       20 阅读

热门阅读

  1. c# 视频流压缩

    2024-01-17 01:22:01       33 阅读
  2. Spring之事务

    2024-01-17 01:22:01       23 阅读
  3. debian apt 装 mysql8

    2024-01-17 01:22:01       43 阅读
  4. PHP手机号码归属地批量查询系统 V2024

    2024-01-17 01:22:01       40 阅读
  5. postman签名算法(将请求体参入签名算法计算)

    2024-01-17 01:22:01       33 阅读
  6. 利用反射获取websocket,session字段的值

    2024-01-17 01:22:01       32 阅读
  7. 学习回顾No.6

    2024-01-17 01:22:01       29 阅读