我有一个 QSpinBox,我想启用箭头(用于上下值),但禁止用户插入数据。 我尝试使用以下代码:
QtGui.QSpinBox.setReadOnly(True)
但它不起作用。所有内容都被禁用,箭头也“卡住”了。
我有一个 QSpinBox,我想启用箭头(用于上下值),但禁止用户插入数据。 我尝试使用以下代码:
QtGui.QSpinBox.setReadOnly(True)
但它不起作用。所有内容都被禁用,箭头也“卡住”了。
如果你将旋转框设置为只读,它会禁用 一切。相反,只需将行编辑器设置为只读,然后按钮仍将工作:
spinbox.lineEdit().setReadOnly(True)
QtGui.QSpinBox.lineEdit().setEnabled(False)
来阻止Spinboxes编辑器。
编辑:并且设置字体颜色和背景颜色:spinbox.lineEdit().setStyleSheet('color: black; background-color: white;')
如果有人在C++中寻找此问题的答案(就像我一样),其他答案并不直接,因为QSpinBox::lineEdit()是受保护的成员(因此还需要扩展该类)。
对我有效的方法是:
auto l1SpinBox = new QSpinBox(this);
auto lineEdit = l1SpinBox->findChild<QLineEdit*>();
lineEdit->setReadOnly(true);
lineEdit->setFocusPolicy(Qt::NoFocus);
connect(l1SpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), l1SpinBox,
[&, lineEdit](){lineEdit->deselect();}, Qt::QueuedConnection);
仅使用setReadOnly可能对您有用。但在我的情况下,我想改善UI,使其不可聚焦,并在值更改时隐藏选择。