如果我有一个QDoubleSpinBox,并且有一个名为setEnabled
的方法,它接受一个布尔值。如果此值设置为False,QDoubleSpinBox将显示为灰色,显示数值调节按钮内的数字,但不允许用户键入任何内容或与其交互。我想稍微修改一下,这样当QDoubleSpinBox未启用时,我希望旋转按钮值设置为空字符串或不呈现,并从显示中删除任何先前的值。
发布于 2020-02-12 07:45:58
一种可能的解决方案是分别在启用或禁用QDoubleSpinBox
的情况下显示和隐藏QDoubleSpinBox
的QLineEdit
。若要检测enabled属性的状态更改,必须重写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_())
https://stackoverflow.com/questions/60178714
复制相似问题