如何使用新语法将自定义信号连接到pyside中的插槽?

如何使用新语法将自定义信号连接到pyside中的插槽?,第1张

如何使用新语法将自定义信号连接到pyside中的插槽

您必须在实现或继承的类中声明新信号;

class ZeroSpinBox (QSpinBox):    atzero = Signal(int)    .    .

然后,您可以使用新型信号来调用它。用于发射信号;

        self.emit(SIGNAL("atzero(int)"), self.zeros)

改成

        self.atzero.emit(self.zeros)

用于连接信号;

         self.connect(zerospinbox, SIGNAL("atzero(int)"), self.announce)

改成

         zerospinbox.atzero.connect(self.announce)

您也可以阅读本文档以了解更多信息。


实施代码示例(PyQt4也与PySide相同,不同的是名称

Signal
pyqtSignal
);

import sysfrom PyQt4.QtCore import *from PyQt4.QtGui import *class ZeroSpinBox(QSpinBox):    atzero = pyqtSignal(int)    zeros = 0    def __init__(self):        super(ZeroSpinBox, self).__init__()        self.valueChanged.connect(self.checkzero)    def checkzero(self):        if self.value() == 0: self.zeros += 1#  self.emit(SIGNAL("atzero(int)"), self.zeros) self.atzero.emit(self.zeros)class Form(QDialog):    def __init__(self):        super(Form, self).__init__()        dial = QDial()        dial.setNotchesVisible(True)        zerospinbox = ZeroSpinBox()        layout = QHBoxLayout()        layout.addWidget(dial)        layout.addWidget(zerospinbox)        self.setLayout(layout)        dial.valueChanged.connect(zerospinbox.setValue)        zerospinbox.valueChanged.connect(dial.setValue)        zerospinbox.atzero.connect(self.announce)#         self.connect(zerospinbox, SIGNAL("atzero(int)"), self.announce)        self.setWindowTitle("Signals")    def announce(self, zeros):        print("zerospinbox has been at zero " + str(zeros) + " times.")app = QApplication(sys.argv)form = Form()form.show()app.exec_()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5667525.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存