QLineEdit::Android的maxLength支持

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

我正在Android下部署一个Qt应用程序。当使用setMaxLength限制QLineEdit长度时,Android虚拟键盘允许我输入超出允许范围的字符,之后当虚拟键盘关闭时,QLineEdit内容将被截断

#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相同