我想寫一個方法,有兩個參數:Q_PROPERTY
名稱(char *
)和QObject *
相關聯,允許將Q_PROPERTY
的通知信號(如果存在)連接到void slot(QVariant)
,或動態連接到插槽建成這將叫void method(QVariant)
。信號的簽名可以根據參數的類型而變化。如何建立一個通用的方法來從不同的Q_PROPERTY類型的notifySignal連接到屬性char * name的void槽(QVariant)?
我該如何在Qt 5中實現?也許這是不可能的,但我不會停止搜索,而我不確定這一點。
所以我覺得我有3個解決方案:
建設動態信號的精確簽名的插槽,從信號名稱,並在它調用一個方法(的QVariant),使用舊的Qt使用全新的Qt 5連接系統
connect(sender, SIGNAL (valueChanged(QString,QString)), receiver, SLOT (updateValue(QString)));
:
connect(sender, &Sender::valueChanged,receiver, &Receiver::updateValue);
- 連接方式
構建可與QVariant一起使用的所有槽簽名。
Althougt,我不知道如何動態構建一個槽,爲第一個解決方案調用指定的方法;對於第二種解決方案,我不知道如何從notifySignal的QMetaMethod
中檢索函數指針;也許最後的解決方案是最好的方式,並且容易實現,但它有點極端。
您對此有何看法?