我想使用 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);
...
}
请注意,我从读取函数中删除了参数。