2025年pyqt 界面重载_使用newstyle语法连接重载的PyQT信号

pyqt 界面重载_使用newstyle语法连接重载的PyQT信号我正在设计一个自定义小部件 它基本上是一个 QGroupBox 包含可配置数量的 QCheckBox 按钮 其中每个按钮都应该控制由 QBitArray 表示的位掩码中的特定位 为了做到这一点 我将 QCheckBox 实例添加到 QButtonGroup 每个按钮都有一个整数 ID def populate self num bits

大家好,我是讯享网,很高兴认识大家。

我正在设计一个自定义小部件,它基本上是一个QGroupBox包含可配置数量的QCheckBox按钮,其中每个按钮都应该控制由QBitArray表示的位掩码中的特定位。为了做到这一点,我将QCheckBox实例添加到QButtonGroup,每个按钮都有一个整数ID:def populate(self, num_bits, parent = None):

"""

Adds check boxes to the GroupBox according to the bitmask size

"""

self.bitArray.resize(num_bits)

layout = QHBoxLayout()

for i in range(num_bits):

cb = QCheckBox()

cb.setText(QString.number(i))

self.buttonGroup.addButton(cb, i)


讯享网

layout.addWidget(cb)

self.setLayout(layout)

然后,每次用户单击中包含的复选框时self.buttonGroup,我想要self.bitArray得到通知,以便可以相应地设置/取消设置数组中的相应位。为此,我打算将QButtonGroup的buttonClicked(int)信号连接到QBitArray的toggleBit(int)方法,为了尽可能的python,我想使用新样式的signals语法,所以我尝试了以下方法:

^{pr2}$

问题是buttonClicked是一个过载信号,因此也存在buttonClicked(QAbstractButton*)签名。事实上,当程序执行时,当我单击某个复选框时会出现以下错误:The debugged program raised the exception unhandled TypeError

"QBitArray.toggleBit(int): argument 1 has unexpected type 'QCheckBox'"

这清楚地显示了toggleBit方法接收到的按钮被点击(QAbstractButton*)信号,而不是按钮点击(int)信号。在

所以,问题是,如何使用新的语法来指定信号连接,以便self.bitArray接收buttonClicked(int)信号,而不是默认的过载-buttonClicked(QAbstractButton*)?在

编辑:您可以使用pyqtSlot修饰符来指定要连接到给定插槽的信号,但这是您正在创建的插槽的信号。当插槽来自“现成”类时该怎么办?唯一的选择是将其子类化,然后用正确的修饰符重新实现给定的插槽吗?在

小讯
上一篇 2025-01-14 09:58
下一篇 2025-01-10 08:38

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/116985.html