QLineEdit - 如何输入单个值 - 没有空格

时间:2013-09-29 10:23:58

标签: qt qlineedit qtgui

我制作了一个编辑器,我必须在每个字段中输入十六进制或十进制值。这里我使用的字段是QLineEdit。

现在要求每个Qlineedit框只接受一个没有空格的值。然后我可以阅读这个文本值&将它直接从字符串转换为十进制。

是否可以让QlineEdit只接受一个没有空格的值?下图中的方框是QLineEdit。

我不想在这里使用组合框。

enter image description here

2 个答案:

答案 0 :(得分:2)

如果答案只是小数,我建议您改用QSpinBox。我找到了一个关于如何实现Hexidecimal SpinBox的线程,但不幸的是,第三方窗口小部件的链接已经死了。但它确实说你可以:

  

子类QSpinBox并重新实现textFromValue()和valueFromText()以显示十六进制值。

使用正确的十进制到十六进制函数(您没有提到您正在使用的语言),这将是一个合适的解决方案。

另一种方法是使用QLineEdit.setValidator函数和QValidator的自定义子类来提供验证方法。为此,只需重新实现QValidator.validate函数即可检查“有效”值。

答案 1 :(得分:1)

基于Lego Stormtroopr的答案,我认为QValidator是一个很好而且简单的选择。例如

dialog->lineedit1->setValidator(new QRegExpValidator( QRegExp("[0-9]{1,20}"), this ));

此处,QRegExp表示您只接受0到9之间的数字而没有其他按键(空格或字母),您应接受至少1个和最多20个字符(数字)。然后,将lineedit的验证器设置为此值。有关详细信息,请访问http://qt-project.org/doc/qt-5.0/qtcore/qregexp.html

或双人,

QDoubleValidator *myDblVal = new QDoubleValidator( 0.0, MAX_VALUE, 1, this);
myDblVal->setNotation( QDoubleValidator::StandardNotation );
dialog->lineedit1->setValidator( myDblVal );

在这里,您只需使用内置的Qt功能进行双重验证。您只接受0到MAX_VALUE之间的小数。