草庐IT

QValidator

全部标签

c++ - QLineEdit 与 QValidator : React to editing finished regardless of input validity?

QLineEdit有一个信号QLineEdit::editingFinished当用户完成编辑时发出,例如按回车键。但是,如果设置了验证器或输入掩码,则只有在输入有效时才会发出editingFinished。但是无论输入的有效性如何,我如何对用户完成编辑使用react?我是否必须手动检查输入、返回、小部件失去焦点等?这样做的原因:我想使用QDoubleValidator创建一个自定义小部件来编辑数字。当用户完成编辑并且输入无效(错误的范围、空文本……)时,我想将其重置为某个有效的默认值。像这样:classNumberEdit:publicQLineEdit{public:NumberE

c++ - 需要手动删除 QValidator 吗?

示例代码:QDoubleValidator*validator=newQDoubleValidator();myInputLineEdit->setValidator(validator);//deletevalidator;注意:myInputLineEdit是一个QLineEdit指针,将与其父级一起删除。我的问题是,我什么时候应该删除验证器,因为它是手动创建的,而且根据文档,setValidator()似乎没有取得此指针的所有权?如果不删除,会不会内存泄露?我试图在之后立即删除它,就像注释代码一样,我注意到在那之后myInputLineEdit的验证器变成了0。所以我想我可能需要

c++ - 仅允许在 QDoubleValidator 的范围内进入 QLineEdit

我有一组QLineEdits应该接受一定范围内的double值(例如,-15到15)。在设置每个时,我有一些类似的东西:lineEdit->setValidator(newQDoubleValidator(minVal,maxVal,5,lineEdit));理想情况下,行编辑可以只输入范围内的值。当我尝试这个时,我注意到只能按需要输入数字,但它们仍然可能超出范围。我如何动态地强制输入适合范围(例如,如果范围是-15到15并且用户键入1,然后尝试键入9,它不起作用/显示9...但是输入1然后输入2确实有效/显示2.)?我是否需要在某处连接并调用validate()函数?

c++ - 十六进制输入的 QValidator

我有一个Qt小部件,它应该只接受一个十六进制字符串作为输入。将输入字符限制为[0-9A-Fa-f]非常简单,但我想让它在“字节”之间显示一个分隔符,例如,如果分隔符是空格,然后用户键入0011223344我希望行编辑显示0011223344现在如果用户按退格键3次,那么我希望它显示0011223。我几乎得到了我想要的东西,到目前为止,只有一个细微的错误涉及使用删除键删除定界符。有没有人有更好的方法来实现这个验证器?到目前为止,这是我的代码:classHexStringValidator:publicQValidator{public:HexStringValidator(QObject

c++ - 如何在 Qt 中一次将输入掩码和 QValidator 设置为 QLineEdit?

我想要一个接受ip地址的行编辑。如果我将输入掩码作为:ui->lineEdit->setInputMask("000.000.000.000");它接受大于255的值。如果我给出一个验证器,那么我们必须在每三位数字后给出一个点(.)。最好的处理方法是什么? 最佳答案 Itisacceptingvaluegreaterthan255.当然可以,因为“0”表示this:ASCIIdigitpermittedbutnotrequired.如您所见,这不是您的菜。至少有以下几种方法可以规避:编写自定义验证器使用正则表达式将输入分成四个条目并