Re: [問題] Qt emit passing list
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章