gpt4 book ai didi

c++ - 我们可以将 Q_PROPERTY 与模板 一起使用吗?

转载 作者:太空狗 更新时间:2023-10-29 21:37:07 27 4
gpt4 key购买 nike

我想使用 QML 和 C++ 在我的 GUI 上显示类型为 template < typename T> 的多数据类型值.是否可以与 Q_PROPERTY 一起使用或者我应该为每种数据类型使用函数重载并将其传递给 Q_PROPERTY

例如:

Q_PROPERTY(int dataread READ dataRead NOTIFY dataChanged)
Q_PROPERTY(float dataread READ dataRead NOTIFY dataChanged)
int dataRead (int data) {return data; }
float dataRead (float data) {return data; }

最佳答案

不,你不能使用带有属性的模板,因为 moc 不支持模板。这已经被讨论过(并且是可行的),但是还没有足够的兴趣来实现它。

每个属性还标识一个具体类型,因此您也不能重载它。您可以重载信号和槽,所以这是可行的:

class foo : public QObject
{
Q_OBJECT
Q_PROPERTY(int intRead READ readInt NOTIFY dataChanged)
Q_PROPERTY(float floatRead READ readFloat NOTIFY dataChanged)

public:
int readInt() {return data; }
float readFloat() {return data; }
signals:
void dataChanged(int data);
void dataChanged(float data);
...
}

请注意,我从您的读取函数中删除了参数。

关于c++ - 我们可以将 Q_PROPERTY 与模板 <typename T> 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38371812/

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