如果我有一个QDoubleSpinBox并有一个可用的方法,该方法setEnabled
需要一个布尔值。如果将此值设置为False,则QDoubleSpinBox将显示为灰色,显示“旋转按钮”中的数字,但不允许用户键入任何内容或与之交互。我想稍作修改,例如,当未启用QDoubleSpinBox时,我希望将“旋转按钮”值设置为空字符串或不进行渲染,并从显示中删除任何先前的值。
一个可能的解决方案是显示和隐藏QLineEdit
的QDoubleSpinBox
,如果QDoubleSpinBox
被启用或禁用,分别。要检测已启用属性的状态变化,必须重写changeEvent()
方法并验证QEvent::EnabledChange
事件:
import sys
from PyQt5 import QtCore, QtWidgets
class DoubleSpinBox(QtWidgets.QDoubleSpinBox):
def changeEvent(self, e):
if e.type() == QtCore.QEvent.EnabledChange:
self.lineEdit().setVisible(self.isEnabled())
return super().changeEvent(e)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
radiobutton = QtWidgets.QRadioButton("enabled/disabled")
spinbox = DoubleSpinBox()
radiobutton.toggled.connect(spinbox.setDisabled)
w = QtWidgets.QWidget()
lay = QtWidgets.QVBoxLayout(w)
lay.addWidget(radiobutton)
lay.addWidget(spinbox)
w.show()
sys.exit(app.exec_())
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句