Qt 中实现观察者模式(Observer Pattern)
在 Qt 中实现**观察者模式(Observer Pattern)通常利用其内置的信号与槽(Signals & Slots)**机制,这是最符合 Qt 设计哲学的方式。以下是详细实现方法和关键点:
—### 1. 观察者模式的核心思想- Subject(被观察者):维护一个观察者列表,在状态变化时通知观察者。- Observer(观察者):定义更新接口,接收通知并做出响应。—### 2. Qt 的实现:信号与槽Qt 的信号与槽机制天然支持观察者模式,无需手动管理观察者列表。实现步骤如下:#### **2.1 定义被观察者(Subject)**被观察者类需要继承 QObject
,并定义一个信号(Signal)表示状态变化。cpp#include <QObject>class DataModel : public QObject { Q_OBJECT // 必须包含 Q_OBJECT 宏以支持信号与槽public: explicit DataModel(QObject *parent = nullptr) : QObject(parent) {} void setData(const QString &data) { if (m_data != data) { m_data = data; emit dataChanged(m_data); // 发射信号 } }signals: void dataChanged(const QString &newData); // 定义信号private: QString m_data;};
#### **2.2 定义观察者(