0

是否有特定于 Qt 的方法来实现 getter 和 setter?也许有 Qt 宏或类似的东西。

4

2 回答 2

2

Q_PROPERTY

从文档(https://qt-project.org/doc/qt-4.8/properties.html):

Qt 提供了一个复杂的属性系统,类似于某些编译器供应商提供的属性系统。然而,作为一个独立于编译器和平台的库,Qt 不依赖非标准的编译器特性,如 __property 或 [property]。Qt 解决方案适用于 Qt 支持的每个平台上的任何标准 C++ 编译器。它基于元对象系统,该系统还通过信号和槽提供对象间通信。

于 2013-06-27T12:37:43.357 回答
1

标准的 setter 和 getter 看起来像这样:

void YourClass::setSomeValue(const type &newValue) {
    if (newValue!=someValue) {
        someValue = newValue;
        emit someValueChanged(someValue);
        // some optional invocations to update sizeHint or schedule widget redrawing ... :
        update();
        updateGeometry();
    }
}

type YourClass::someValue() const {
    return someValue;
}

如果你正在寻找类似@synthesizeObjcetive C 中的东西,Qt 中没有这样的东西,但你可以定义自己的宏(我有时会这样做)。

于 2013-06-27T14:13:31.227 回答