QLineEdit::Android的maxLength支持
我正在Android下部署一个Qt应用程序。当使用setMaxLength限制QLineEdit长度时,Android虚拟键盘允许我输入超出允许范围的字符,之后当虚拟键盘关闭时,QLineEdit内容将被截断QLineEdit::Android的maxLength支持,android,qt,Android,Qt,我正在Android下部署一个Qt应用程序。当使用setMaxLength限制QLineEdit长度时,Android虚拟键盘允许我输入超出允许范围的字符,之后当虚拟键盘关闭时,QLineEdit内容将被截断 #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include <QLineEdit> int main( int argc, char* arg
#include <QApplication>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QLineEdit>
int main( int argc, char* argv[] )
{
QApplication app( argc, argv );
QMainWindow wnd;
QLineEdit edit( &wnd );
edit.setMaxLength( 10 );
wnd.setCentralWidget( &edit );
wnd.show();
return app.exec();
}
有没有办法让虚拟键盘处理这个限制,不让用户输入超过允许的字符数
注意:创建的qt错误:有不同的选择,第一个选择是使用函数。根据官方文件: 此属性保存文本的最大允许长度。如果 文本太长,在限制处被截断 如果您在Android键盘上遇到问题,那么另一种选择是,您可以使用一个给定的。出于您的目的,一个好的方法可以是:
/^(?=.{3,16}$)[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/
或者最简单的一个:
^\s*([^\s]\s*){0,400}$
其中值{0400}定义了字符串允许的最大大小。例如:
QRegExp regexp("^\s*([^\s]\s*){0,400}$");
QRegExpValidator *validator = new QRegExpValidator(regexp, this);
lineEdit->setValidator(validator);
最后一个,尽量避免它,只是处理信号和限制字符串手动 我怀疑Android虚拟键盘能否解决这个问题。这将是相同的行为,用户将被允许输入他想要的任何内容,然后在验证后修改内容……这并不阻止用户输入比Android下预期更多的字符。它最终的行为与setMaxLength相同