尝试使用自定义对象了解QSignalMapper
我正在尝试了解QSignalMapper。我得到了如何使用处理str
的插槽单击按钮。我试图将qObject
映射到同样的情况下,但它一直失败。我是做错了什么还是我想念某事?
class TObject(QObject):
def __init__(self):
super().__init__(None)
class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setLayout(QVBoxLayout())
fruit_list = ["apples", "oranges", "pears"]
sigMapper = QSignalMapper(self)
sigMapper.mapped[str].connect(self.SLOTSTR) # type:ingore
sigMapper.mapped[TObject].connect(self.SLOTOBJECT) # type:ingore
for i, fruit in enumerate(fruit_list):
btn = QPushButton(fruit)
btn.clicked.connect(sigMapper.map)
sigMapper.setMapping(btn, TObject() if i == 0 else str(fruit))
self.layout().addWidget(btn)
def SLOTSTR(self, s: str):
print("SLOTSTR", s)
def SLOTOBJECT(self):
print("SLOTOBJECT")
I am trying to understand the QSignalMapper. I got how to map a button click with the slot that handles str
. I was trying to map a QObject
to do the same, but it keeps failing. Am I doing something wrong or did I miss understanding something ?
class TObject(QObject):
def __init__(self):
super().__init__(None)
class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setLayout(QVBoxLayout())
fruit_list = ["apples", "oranges", "pears"]
sigMapper = QSignalMapper(self)
sigMapper.mapped[str].connect(self.SLOTSTR) # type:ingore
sigMapper.mapped[TObject].connect(self.SLOTOBJECT) # type:ingore
for i, fruit in enumerate(fruit_list):
btn = QPushButton(fruit)
btn.clicked.connect(sigMapper.map)
sigMapper.setMapping(btn, TObject() if i == 0 else str(fruit))
self.layout().addWidget(btn)
def SLOTSTR(self, s: str):
print("SLOTSTR", s)
def SLOTOBJECT(self):
print("SLOTOBJECT")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我只是想出了错误。
到
I just figured out the error.
to