首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用自定义对象来理解QSignalMapper

尝试使用自定义对象来理解QSignalMapper
EN

Stack Overflow用户
提问于 2022-05-26 03:28:43
回答 1查看 27关注 0票数 0

我正在努力理解QSignalMapper。我了解了如何用处理str的插槽来映射按钮单击。我试图映射一个QObject来做同样的事情,但是它一直在失败。我是做错了什么还是错过了什么?

代码语言:javascript
运行
复制
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")
EN

Stack Overflow用户

回答已采纳

发布于 2022-05-26 03:45:05

我刚刚发现了错误。

代码语言:javascript
运行
复制
sigMapper.setMapping(btn, TObject() if i == 0 else str(fruit))

代码语言:javascript
运行
复制
sigMapper.setMapping(btn, TObject(self) if i == 0 else str(fruit))
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72386366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档