QLineEdit有一个信号QLineEdit::editingFinished,当用户完成编辑时发出信号,例如按enter。但是,如果设置了验证器或输入掩码,那么只有当输入有效时才会发出editingFinished。
但是,不管输入的有效性如何,用户完成编辑后我会如何反应呢?我是否必须手动检查输入、返回、小部件丢失焦点等?
原因是:我想创建一个自定义小部件,用于使用QDoubleValidator编辑数字。当用户完成编辑并且输入无效时(错误范围,空文本,.)我想把它重置为一些有效的默认值。就像这样:
class NumberEdit: public QLineEdit
{
public:
我不想使用double验证QLineEdit值,我想从代码本身验证它,所以我尝试:
QDoubleValidator dv(1.5,30.0,1);
double d = 1.3;
int pos=0;
qDebug()<< dv.validate(QString::number(d,'f',1), pos);
上面的qDebug()应该返回QValidator::Invalid i.e. 0,但是它返回的是QValidator::Intermediate,也就是说,对于每个双值,总是返回1吗?
我有一个有3列的QTreeWidget,只有第3列应该有一个双验证器。我的问题是,它在某种程度上是有效的;QLineEdit不会在100停止,它只是继续前进。
我错过了什么;使它不允许用户输入任何高于100的内容,同时仍然编辑lineEdit?
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Delegate(QStyledItemDelegate):
'Changes number of decimal places in
我想使用QLineEdit来获取用户输入的值。我想在一个范围内限制输入,所以我应该使用QDoubleValidator。我希望它能够工作,如果它们超过允许的值,它将文本设置为top()值,如果它们低于,则将文本设置为bottom()值。
我研究了如何使用textChanged、returnPressed和inputRejected信号。我遇到麻烦的原因是,一旦我用范围设置了验证器,returnPressed就不会进入他们提到的的check_validator函数。然后,我想也许我可以用输入拒绝信号来捕获它,但由于某种原因,这似乎也不起作用。下面是一些代码:
class LineEdit(QLi
我正在使用PyQt5构建一个桌面应用程序,但是,我有一些QlineEdit字段,我希望它们只接受使用QtGui.QIntValidator()的整数,我发现我可以输入的最大整数数是10个,即使我没有使用setMaxLength()函数
在谷歌搜索之后,我没有发现任何关于这个问题的线索。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
D
我有以下设计
QWidget
QFrame promoted to FooComponent
QLineEdit a (internal tab order 1)
QLineEdit b (tab order 2)
QLineEdit c (tab order 1)
在Qt (designer)中,我无法为FooComponent设置选项卡顺序。因此,当我激活QWidget时,我会在c中看到光标,但我希望它在a中。
如何使用级联组件处理制表符顺序?