gpt4 book ai didi

Qt ENUMS - setProperty 隐式转换

转载 作者:行者123 更新时间:2023-12-04 05:31:13 27 4
gpt4 key购买 nike

考虑以下类:

class foo : public QObject {
Q_OBJECT
Q_ENUMS(E)
Q_PROPERTY(E x READ x WRITE setx)

public:
enum E {
a = 0,
b = 1,
c = 2
};
}

foo f;
f->setProperty("x", 2);

不向 setx 提供映射的枚举值。

有没有办法启用此功能?

最佳答案

您仍然需要实际的 get 和 set 方法:

class Foo : public QObject {
Q_OBJECT
Q_ENUMS(E)
Q_PROPERTY(E x READ x WRITE set_x)

public:
enum E {
a = 0,
b = 1,
c = 2
};

E x() const { return x_; }
void set_x(E value) { x_ = value; }

private:
E x_;
};

这现在可以工作:
int main (int argc, char **argv) {
QCoreApplication app(argc, argv);

Foo f;

f.setProperty("x", Foo::c);
std::cout << f.property("x").toInt() << std::endl; // 2

f.setProperty("x", 0); // Foo:a will also work
std::cout << f.property("x").toInt() << std::endl; // 0
}

关于Qt ENUMS - setProperty 隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com