我们可以将Q_PROPERTY与模板<类型名 T> 一起使用吗?



我想使用 QML 在我的 GUI 上显示并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; }

不,不能使用带有属性的模板,因为 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);
...
}

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

相关内容

  • 没有找到相关文章

最新更新