2016-07-14 85 views
3

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

例如:

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; } 

回答

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

请注意,我从你读功能删除的参数。

+0

'dataRead'没有意义,你不能在返回类型上重载。我也会避免重载信号,因为你将面临PMF连接语法的问题。 – peppe

+0

@peppe好,赶快,谢谢。 –

相关问题