Re: [問題] Qt emit passing list

看板Python作者 (←這人是超級笨蛋)時間14年前 (2012/01/12 15:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《b60413 (None)》之銘言: : 自行寫了一個SIGNAL/SLOT的訊號要去Qt做事件觸發 : 但想要在觸發事件的時候傳遞參數給指定的function使用 : 測試過傳遞int的參數可以正常使用 : 但是使用string,array,list卻無法正常使用 : 請問有人知道應該如何傳遞上述類型的參數嗎? : 底下附上使用int類型可以正常使用的code : code: : emit(SIGNAL("test(int)"),a) : QObject.connect(tmp,SIGNAL("test(int)"),self,SLOT('test(int)')) 如果我沒記錯的話, 這跟你引用 PyQt 時的設定有關係 預設的設定中 PyQt 只能傳 Qt 原生的類型, 所以跟一些 Python 類型不相容 以上面的三個例子, 你可以改傳 QString 和 QList 等 Qt 類型 要得到原生的 Python 類型支援就必須轉到新的 API 設定(API 2 之類的名字) 這樣 PyQt 才會自動幫你進行進一步的轉換, 把 QString 之類的類型直接代換掉 順帶一題你的 signal/slot 寫法有點過時了 如果你是用比較新版的 PyQt, 建議用新寫法, 比較清楚也比較好看 寫法類似下面這樣: from PyQt4 import QtCore class Sender(QtCore.QObject): sig1 = QtCore.pyqtSignal(int) class Receiver(QtCore.QObject): def __init__(self, parent=None): super(type(self), self).__init__(parent) self.sender = Sender(self) self.sender.sig1.connect(self.slot1) self.sender.sig1.emit(10) def slot1(self, foo): print foo -- ╱ ̄ ̄ ̄╲ ▏◢█◣ 成龍表示: 是喔... ′/ ‵ ╰╯ ψQSWEET █◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146
文章代碼(AID): #1F3eyIuB (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1F3eyIuB (Python)