智能指针
一、背景知识
回忆我们最初学Qt
的时候,经常通常都是在一个文件中,创建很多控件,然后在当前文件中处理该控件,包括信号槽的处理,控件的变化等等…我们最初用的就是所谓的命令式编程 也就是MVC
随着我们的项目愈发庞大,我们发现,我们的代码越来越难以维护,并且出现的bug
很难定位,俗称(屎山),后面我们了解到声明式编程 也就是MVVM
二、命令式编程 vs 声明式编程
2.1 命令式编程(Imperative Programming)
命令式编程是一种通过一系列指令和命令来改变程序状态的范式。开发者需要显式地描述如何进行某些操作,通常通过控制流(如条件语句、循环等),逐步指示计算机完成任务。这种方式强调“如何做”。
👁️👁️特点:
- 步骤驱动:开发者需要明确每个操作步骤。
- 状态管理:程序的状态在每一步变化中逐渐改变。
- 控制流:使用条件和循环来控制程序的执行顺序。
根据以下实例,我们通过信号和槽直接处理用户的点击事件,通过显式地调用方法来更新UI
。
#include <QApplication>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QWidget window;
QVBoxLayout layout(&window);
QLabel label("Hello, World!");
QPushButton button("Change Text");
layout.addWidget(&label);
layout.addWidget(&button);
// 命令式风格
QObject::connect(&button, &QPushButton::clicked,