Qt LineEdit QCompleter QComboBox 组合,实现lineEdit记忆功能下拉选项功能

本文介绍了如何在QT环境中使用QLineEdit和QCompleter来实现文本输入的自动补全功能,同时展示了如何结合QComboBox展示历史记录选项。通过设置忽略大小写的自动补全,确保用户输入的便捷性。此外,还展示了在lineEdit按下回车时如何保存历史记录,并更新数据模型。对于QComboBox,讲解了如何将其与QLineEdit结合,使得用户输入时可以从历史记录中选择,以及响应currentIndexChanged信号处理选中项变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

伪代码 有问题请问

QTLineEdit 和QCompleter 组合实现自动补全提示

	QLineEdit *lineEdit = new QLineEdit(this);//主控件
			lineEdit->setClearButtonEnabled(true);//添加清除按钮

    QStringList valueList;//历史记录保存列表
    QStringListModel* listModel;//数据来源模型
    QCompleter *completer = new QCompleter(this); //提供自动补全的对象可用于lineEdit和combobox
    listModel = new QStringListModel(valueList, this);//填充模型
    completer->setCaseSensitivity(Qt::CaseInsensitive);//设置忽略大小写 //Qt::CaseSensitive区分大小写
//Qt::CaseInSensitive不区分大小写
    completer->setModel(listModel);//填充数据来源模型
    lineEdit->setCompleter(completer);//使lineEdit提供自动完成


//在每次需要保存历史信息的场景下,将数据保存到历史记录保存列表中,valueList中
//例如,当lineEdit按下回车时,在editingFinished的信号对应的槽函数中实现
void Widget::on_lineEdit_editingFinished()//lineEdit转到槽的槽函数
{
    QString text = ui->lineEdit->text();//获取lineEdit的数据
        if(QString::compare(text, QString("")) != 0) {//判断是不是为空
            bool flag = valueList.contains(text, Qt::CaseInsensitive);//忽略大小写搜索历史记录中(calueList中的text文本),如果list中包含text返回ture,为了不保存重复值,就在返回false是再想list中添加text
            if(!flag) {
                valueList.append(text);
                listModel->setStringList(valueList);//刷新数据来源模型
            }
        }
}

QLineEdit 和QComboBox 组合实现下拉历史选项

	QComboBox comboBox=new QComboBox(this);//创建QComboBox对象
	QLineEdit *lineEdit = new QLineEdit(this);//创建LineEdit
	lineEdit->setClearButtonEnabled(true);//添加清除按钮
    lineEdit->setPlaceholderText("提示信息");
    comboBox->setLineEdit(lineEdit);//输入时向lineEdit输入,而不使用comboBox的编辑控件
    //comboBox的成员函数中有addItem,可以向comboBox添加数据,可以带图标
    comboBox->addItem("下一个");
    //每一个下拉选项都有一个Index,当你点击其中一个下拉选项时Index就会发生改变,触发currentIndexChanged信号,在对应的槽函数中可以做一些事情
    void Widget::on_comboBox_currentIndexChanged(int index)
{

	qDebug()<<ui->comboBox->currentText();//获取当前的文本
	qDebug()<<ui->comboBox->currentIndex();//获取当前的Index
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值