2016-07-14 17 views
3

QMLとC++を使用してGUIに表示する場合、template < typename T>のマルチデータ型の値を使用します。それをQ_PROPERTYと一緒に使用することは可能ですか、または各データタイプの関数オーバーロードを使用してQ_PROPERTYに渡す必要がありますか?例えばテンプレート<typename T>で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; } 

答えて

2

いいえ、あなたはMOC doesntのサポートテンプレートとして、プロパティを持つテンプレートを使用することはできません。これは議論されている(実行可能である)が、それを実装するのに十分な興味はなかった。

各プロパティはコンクリートタイプも識別します。したがって、オーバーロードすることもできません。あなた過負荷シグナルとスロットすることができますので、これはなんとかです:私はあなたの読み取り機能からパラメータを削除

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良いキャッチ、ありがとう。 –

関連する問題