我们可以将Q_PROPERTY与模板<typename t =“”>一起使用吗?

时间:2016-07-14 10:29:08

标签: c++ qt user-interface qml

我希望在我的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; }

1 个答案:

答案 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);
...
}

请注意,我从您的阅读功能中删除了参数。