QSpinBox信号用于箭头按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QSpinBox信号用于箭头按钮相关的知识,希望对你有一定的参考价值。

我知道这个问题已经以类似的方式被问到了,但是我在使用QSpinBox(或QDoubleSpinBox)时可以选择的众多信号的广阔世界中迷失了方向。我想将我的功能连接到editingFinished信号(很好,它完美地工作),但这也不会连接到箭头按钮 - 所以我也需要信号。每次发出valueChanged时我都不想调用我的函数 - 只有在编辑完成或使用箭头时才会调用。

答案

一种方法是重新实现stepBy method并发出自定义信号。这种方法的主要优点是它将处理使用向上/向下键以及箭头按钮所做的更改。这是一个基本的演示:

import sys
from PyQt4 import QtCore, QtGui

class SpinBox(QtGui.QSpinBox):
    stepChanged = QtCore.pyqtSignal()

    def stepBy(self, step):
        value = self.value()
        super(SpinBox, self).stepBy(step)
        if self.value() != value:
            self.stepChanged.emit()

class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.spin = SpinBox()
        self.spin.editingFinished.connect(self.handleSpinChanged)
        self.spin.stepChanged.connect(self.handleSpinChanged)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.spin)

    def handleSpinChanged(self):
        print(self.spin.value())

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 100, 150, 50)
    window.show()
    sys.exit(app.exec_())

以上是关于QSpinBox信号用于箭头按钮的主要内容,如果未能解决你的问题,请参考以下文章

QSpinbox editingFinished 上/下箭头上的信号

在不更改应用样式的情况下更改 QSpinBox 箭头大小

当我按下 QSpinbox 中的箭头时,如何防止双 valueChanged 事件?

Python Qt GUI设计:QSpinBox计数器类(基础篇—15)

Python Qt GUI设计:QSpinBox计数器类(基础篇—15)

如何通过后退按钮(箭头)将活动导航到片段?