Q_PROPERTY 带参数的例子代码
时间: 2024-07-01 14:00:46 浏览: 118
`Q_PROPERTY` 是 Qt 中的一种特性,用于声明和提供对 C++ 类属性的访问,通常配合 `QObject` 类使用,使得属性能够像成员变量一样方便地进行设置、获取和信号/槽连接。`Q_PROPERTY` 的语法包含属性名、类型、存取器方法名和更改通知等信息。
这是一个简单的例子,假设我们有一个名为 `ColorPicker` 的类,它有一个 `color` 属性,我们可以这样定义:
```cpp
class ColorPicker : public QObject
{
Q_OBJECT
public:
// 定义 Q_PROPERTY
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
explicit ColorPicker(QObject* parent = nullptr) : QObject(parent) {}
public slots:
// 提供存取器方法
QColor color() const { return m_color; }
void setColor(const QColor& newColor) {
if (newColor != m_color) {
m_color = newColor;
emit colorChanged(); // 当颜色改变时发出信号
}
}
signals:
// 定义信号,当 colorChanged() 被调用时发出
void colorChanged();
private:
QColor m_color; // 存储颜色的变量
};
```
在这个例子中:
- `Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)` 定义了一个 `color` 属性,类型为 `QColor`,读取方法是 `color()`,写入方法是 `setColor()`,并且当 `color` 改变时会发出 `colorChanged()` 信号。
- `const QColor& newColor` 表示传入的新颜色值是一个引用,避免复制。
- `emit colorChanged();` 在 `setColor` 方法中,当颜色确实被更改时,会触发 `colorChanged` 信号。