當對象名稱,信號和插槽全部在文本文件中指定時,如何連接2個對象的信號和插槽?Qt:連接來自文本的信號和插槽
獲取正確的對象名稱不是問題,因爲我可以輕鬆地遍歷數組並將名稱與文件中的點名進行比較,但是必須有某種方法可以返回信號並且從文件插槽,並用它在連接功能,如:
connect(rtnObj1(line),SIGNAL(rtnSignal(line)),rtnObj2(line),SLOT(rtnSlot(line)));
其中RTN函數返回的對象名稱/信號/槽,和「線」是從該文件的當前的QString線。
我知道的唯一方法是通過在每個組合中進行字面編碼並將QStrings與if語句進行比較,但這會非常乏味,因爲組合的數量會非常高。
注: 這裏有一個簡單的例子演示基本這個問題如何存在。
第1幀: 4 QComboBoxes。第一和第三保持對象名稱,第二保持信號,第四保持槽。每個項目當然是這些列表中的一個QString。點擊一個按鈕將新行添加到文件中,寫入從每個框中選擇的文本。
第2幀:已經有必需的對象。讀取文件時,它會將列表中定義的對象與已創建的對象相匹配,並按照文件描述將它們連接起來。
基於文件所保存的數據很容易創建對象,但是如何從文件創建/拉取信號和插槽?
編輯: 除非,是否能夠這樣連接?
connect(objectA, "", objectB, "");
因爲我剛剛發現我的代碼可以編譯這樣的,但是每當我試圖把在插槽或信號名稱我得到這樣一個錯誤:
的QObject ::連接:使用在SIGNAL宏綁定瓷磚::點擊
如果你正在尋找的示例代碼,你很可能看到兩個PyQt的綁定。 – o11c 2014-10-06 03:33:41
是的!非常感謝!這正是我所期待的!我知道必須有某種方式來做這件事,因爲連接發生在運行時而不是編譯時。感謝您抽出時間來加入這個例子。現在一切正常。 – Yattabyte 2014-10-07 00:32:16