我希望在我的GUI上使用QML和C ++显示类型为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; }
答案 0 :(得分:2)
不,您不能将模板与属性一起使用,因为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);
...
}
请注意,我从您的阅读功能中删除了参数。