首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android支持QLineEdit::maxLength

Android支持QLineEdit::maxLength
EN

Stack Overflow用户
提问于 2017-07-11 17:17:36
回答 1查看 72关注 0票数 0

我正在Android下部署一个Qt应用程序。当QLineEdit长度受限时(使用setMaxLength),Android virutal键盘允许我输入超过允许的字符,稍后当关闭虚拟键盘时,QlineEdit内容会被截断。

代码语言:javascript
复制
#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 bug:https://bugreports.qt.io/browse/QTBUG-61940

EN

回答 1

Stack Overflow用户

发布于 2017-07-11 17:45:15

有不同的选择,第一个选择是使用QLineEdit::setMaxLength函数。根据官方文件:

此属性保存文本的最大允许长度。如果文本太长,将在限制处截断。

如果你对安卓键盘有问题,那么另一种选择是,你可以通过对给定的QRegExp使用QValidator来设置允许的最大尺寸。对于你的目的来说,一个好的例子可能是:

代码语言:javascript
复制
/^(?=.{3,16}$)[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/

或者是最简单的一个:

代码语言:javascript
复制
^\s*([^\s]\s*){0,400}$

其中,值{0,400}定义了字符串的最大允许大小。示例:

代码语言:javascript
复制
QRegExp regexp("^\s*([^\s]\s*){0,400}$");
QRegExpValidator *validator = new QRegExpValidator(regexp, this);
lineEdit->setValidator(validator);

最后一个,尽量避免它,只需处理textChanged信号并手动限制字符串。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45030312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档