qml 输入框

基本概念

这是一个很常用到的功能,特意记录下:

一般输入框会用到2个,一个是TextInput一个是TextField。

因为TextInput加Rectangle如果太长会出现一种问题,就是Text会输入到Rectangle外面。

可以用TextField代替,也可以限制其长度

 

TextInput和TextField中都含有一个属性:maximumLength

这个是运行的文本长度,超出长度会被截断TextInput的maximumLength的默认值为32767,而TextField没有默认。

 

下面是设置回显方式:

一TextInput为例:

  • TextInput.Normal:直接显示文本(默认方式);

  • TextInput.Password:使用密码掩码字符(根据不同平台显示效果不同)来代替真实的字符;

  • TextInput.NoEcho:不显示输入的内容;

  • TextInput.PasswordEchoOnEdit:使用密码掩码字符,但在输入时显示真实字符。

 

QML中,可借助`TextInput`和`TextField`这两个主要的用户输入控件来实现动态输入框,它们能让用户输入纯文本或格式化文本,还支持文本编辑、光标移动和选择等功能[^2]。 ### `TextInput`实现动态输入框 `TextInput`是一个简单的单行文本输入控件。以下是基本示例: ```qml import QtQuick 2.0 Item { width: 200 height: 40 TextInput { anchors.centerIn: parent placeholderText: "Type something here" } } ``` 在这个例子里,`TextInput`被置于`Item`中央,并且设置了占位符文本。 ### `TextField`实现动态输入框 `TextField`是功能更丰富的输入框,除了基本输入功能外,还具备更多属性。示例如下: ```qml import QtQuick 2.0 import QtQuick.Controls 2.15 ApplicationWindow { visible: true width: 200 height: 40 TextField { anchors.centerIn: parent placeholderText: "Enter text here" onTextChanged: { console.log("Text changed: " + text) } } } ``` 此示例中,`TextField`同样被置于窗口中央,设置了占位符文本,并且添加了`onTextChanged`信号处理函数,当输入框文本改变时会在控制台输出相应信息。 ### 实现输入框自动补全 若要实现输入框自动补全功能,可结合QtWidgets的`QCompleter`。示例代码如下: ```cpp #include <QApplication> #include <QWidget> #include <QLineEdit> #include <QCompleter> #include <QStringList> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget window; QStringList words; words << "123456" << "234567" << "345678" << "456789"; QCompleter *completer = new QCompleter(words, &window); // 默认从头开始匹配,MatchContains设置为任意位置匹配 completer->setFilterMode(Qt::MatchContains); QLineEdit *lineEdit = new QLineEdit(&window); lineEdit->setCompleter(completer); window.show(); return a.exec(); } ``` 此代码通过`QCompleter`为`QLineEdit`输入框实现了自动补全功能,并且设置为任意位置匹配[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值