- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了 QDoubleSpinBox 的问题。 “退格”键的编辑行为在某种程度上取决于后缀的大小。如果我将“m”设置为后缀,然后将光标设置在旋转框的末尾并按“退格键”,光标会跳过“m”后缀到可以使用更多“退格键”进行编辑的值。如果我将后缀设置为“mm”或任何双字母单词,无论我按下多少个“退格键”,光标都会停留在旋转框的末尾。
我试图调试进入“validate”方法的内容,得到了一个奇怪的结果:当光标位于“0,00m”的末尾时按下“退格键”,验证接收到“0,00m”。当光标位于“0,00_m”末尾时按下“退格键”时,验证接收到“0,00__m”当光标位于“0,00_mm”末尾时按下“退格键”时,验证接收到“0,00_m_mm”
这种行为的原因是什么,我该如何克服?
# coding=utf-8
from PyQt5 import QtWidgets
class SpinBox(QtWidgets.QDoubleSpinBox):
def __init__(self):
super().__init__()
def validate(self, text, index):
res = super().validate(text, index)
print(text, res, self.text())
return res
if __name__ == "__main__":
q_app = QtWidgets.QApplication([])
sb = SpinBox()
sb.setSuffix(" m")
sb.show()
q_app.exec_()
最佳答案
QDoubleSpinBox/QAbstractSpinBox
的源代码在按键事件处理方面非常复杂 - 我无法弄清楚默认行为应该是什么,甚至无法确定它可能在何处实现.某处可能存在错误,但我不想打赌。
看起来唯一的选择是重新实现keyPressEvent
:
class SpinBox(QtWidgets.QDoubleSpinBox):
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Backspace:
suffix = self.suffix()
if suffix:
edit = self.lineEdit()
text = edit.text()
if (text.endswith(suffix) and
text != self.specialValueText()):
pos = edit.cursorPosition()
end = len(text) - len(suffix)
if pos > end:
edit.setCursorPosition(end)
return
super().keyPressEvent(event)
关于python - QDoubleSpinBox “backspace”键的编辑行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40756382/
我正在对射弹进行弹道计算。所以我有一个复选框并且基于复选框我必须接受输入即,如果启用了复选框,则从 double-spinbox 读取值并进行弹道计算 否则我将使用双旋转框的默认值编写这段代码,但我最
我想从文本文件中读取字符串(数据)并将数据写入 QDoubleSpinBox。因此我使用了: void GUIsubclassKuehniGUI::LoadDirectory() {
我正在尝试编写一个自定义的 QDoubleSpinBox 子类,它在其内部值和显示值之间有一个比例因子/函数。这样做的目的是支持以不同单位显示相同的内部值(例如,允许用户选择是显示米、毫米还是英寸,但
关于某些任务,我必须执行以下操作。假设我有一个 QDoubleSpinBox 的正值从 0 到 1000。每次当用户试图降低旋转框的值时,f.e.要在值为 0 时单击向下按钮,spinbox 的值必须
如果我有一个 QDoubleSpinBox 并且有一个名为 setEnabled 的可用方法,它采用 bool 值。如果此值设置为 False,QDoubleSpinBox 将显示为灰色,显示微调按钮
我正在尝试使用 PyQt5 在 Python 3.7 中设置 QDoubleSpinBox,它可以采用从 -np.inf 到 np.inf 的一系列值。我还希望用户将值设置为 -np.inf 或 np
在 PySide2 中,如果我创建一个 QDoubleSpinBox 并显式将其 decimals 属性设置为 2,将其 singleStep 属性设置为 0.1,然后通过 up/更改其值向下按钮,打
我遇到了 QDoubleSpinBox 的问题。 “退格”键的编辑行为在某种程度上取决于后缀的大小。如果我将“m”设置为后缀,然后将光标设置在旋转框的末尾并按“退格键”,光标会跳过“m”后缀到可以使用
在 QT 中,我试图用一个旋转框来表示以分贝为单位的功率级别,当功率级别小于 1 时,它会变为负无穷大。 我打电话: this->ui->powerdbBox->setMinimum(DBL_MIN)
QDoubleSpinBox 功能需要为用户提供选项,只需单击箭头键即可轻松增加某些点的值。但绝对有必要让用户也能够手动输入十进制值。例如。如果他需要通过打字输入 12.25,他应该可以。但如果他需要
我已经为执行一些几何计算的脚本编写了一个 GUI。某些值范围会破坏计算(例如,找到不相交的两个形状的交集。)在这些情况下我会引发异常。我想阻止用户将旋转框值调整到超出引发异常的点。 我尝试覆盖 QDo
我尝试过的一切似乎都不起作用。如果我从 QDoubleSpinBox 切换到 QSpinBox,setMinimumSize 完全符合我的要求,这让我相信这可能是 Qt 5.1 中的一个错误。 最佳答
我想将 QSlider 连接到 QDoubleSpinBox,但是虽然代码可以正常编译并针对简单的 QSpinBox 运行,但它不适用于 QDoubleSpinBox QSlider *horizon
我是 QT Designer 的新手,正在为 Maya 构建界面。在我见过的大多数教程中,在两个对象之间设置信号/槽非常简单。 我正在尝试设置 slider 和旋转盒来相互驱动。如果 slider 更
我是 QT Designer 的新手,正在为 Maya 构建界面。在我见过的大多数教程中,在两个对象之间设置信号/槽非常简单。 我正在尝试设置 slider 和旋转盒来相互驱动。如果 slider 更
我正在构建一个使用多个频率范围的应用程序。我需要用户能够增加/减少 QDoubleSpinBox 中的值,以及键入值。如果我将值增加到一个范围之外的数字,我希望该值跳到下一个范围(减少值的原理相同)。
我有一个仅使用 int 值的 qspinbox。我也有复选框。如果 checkbox == 0,qspinbox 必须只使用 int 值,但如果 checkbox == 1,qspinbox 必须只使
我在 QT 中有一个 QDoubleSpinBox。我想有条件地禁用升压和/或降压按钮。我不确定该怎么做。 我看到在 QAbstractSpinBox 中有一个名为 StepEnabledFlag 的
如果 QDoubleSpinbox 中的值为正数,则不显示任何符号。 如果该值改为负数,它会自动添加“-”号。 如果前缀强制为“+”,则正数将带符号显示 doubleSB->setPrefix("+"
iv'e 更改了 QDoubleSpinbox 因为我想要 '.'而不是“,”,但现在 setDecimals 不起作用...我如何保留 qdoublespinbox 相对于 setdecimals
我是一名优秀的程序员,十分优秀!