QT实现输入框与下拉框提示并可模糊匹配 | 您所在的位置:网站首页 › 可下拉输入框 › QT实现输入框与下拉框提示并可模糊匹配 |
功能:支持下拉框选择、手动输入更改和模糊匹配
组件:QLineEdit、QComboBox、QCompleter、QStringListModel 一、组件介绍 1.1 QLineEditQLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本。明白了其作用,进入封装类QLineEdit源码看下其成员函数。 主要看下常用的函数和一些自带的信号与槽。 class Q_WIDGETS_EXPORT QLineEdit : public QWidget { Q_OBJECT Public: QString text() const; QString displayText() const; QString placeholderText() const; void setPlaceholderText(const QString &); void setCompleter(QCompleter *completer); 等等 Q_SIGNALS: void textChanged(const QString &); void textEdited(const QString &); void cursorPositionChanged(int, int); void returnPressed(); void editingFinished(); void selectionChanged(); Q_SLOTS: void setText(const QString &); void clear(); void selectAll(); void undo(); void redo(); } 1.2 QcomboBoxQComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。 class Q_WIDGETS_EXPORT QComboBox : public QWidget { Q_OBJECT Public: void setEditable(bool editable); void setLineEdit(QLineEdit *edit);//和Qlineedit绑定 void setCompleter(QCompleter *c);//设置模糊匹配 inline void addItems(const QStringList &texts)//绑定字符串组 { insertItems(count(), texts); } 1.3 QCompleterQCompleter能实现QLineEdit根据输入自动补全的功能,根据单词列表提示完成单词输入,也可补全文件路径。 可以设置匹配的模式,匹配是否大小写敏感等。 setCaseSensitivity(Qt::CaseInsensitive);//大小写不敏感 setFilterMode(Qt::MatchRecursive);//匹配规则:包含则匹配 setCompletionMode(QCompleter::UnfilteredPopupCompletion); 1.4 QStringListModelQStringListModel是最简单的模型类,具备向视图提供字符串数据的能力。QStringListModel是一个可编辑的模型,可以为组件提供一系列字符串作为数据。可以将其看作是封装了QStringList的模型。QStringList是一种很常用的数据类型,实际上是一个字符串列表(也就是QList)。既然是列表,它也就是线性的数据结构,因此,QStringListModel很多时候都会作为QListView或者QComboBox这种只有一列的视图组件的数据模型。 最基本的 model/view 模型的使用。既然是 model/view,我们会分为两部分:model 和 view。Qt 内置的最简单的一个模型:QStringListModel。接下来,我们再介绍另外的一些内置模型,在此基础上,我们将了解到 Qt 模型的基本架构,以便为最高级的应用——自定义模型——打下坚实的基础。 model/view(模型/视图)结构是QT中用界面组件显示与编辑数据的一种结构,视图是显示和编辑数据的界面组件,模型是视图与原始数据之间的接口。常见的视图QListView、QTreeView、QTableView,常见的模型QStringListModel、QStandardItemModel。 //1、读取一个qstring的list QStringList indicator; indicator setStringList(indicator); //3、视图设置此模型 QCompleter* m_completer->setModel(string_list_model); 二、简单功能实现 2.1 DEMO源码QLineEdit* m_edit = new(std::nothrow) CTextEdit(this); //下拉框匹配,qcombox实现下拉框 m_box = new(std::nothrow) QComboBox(this); m_completer = new(std::nothrow) QCompleter(); QStringList indicator; indicator setCompletionMode(QCompleter::UnfilteredPopupCompletion); //m_edit->setCompleter(m_completer); m_box->clear(); m_box->addItems(indicator); m_box->setEditable(true); //设置可编辑 m_box->setCompleter(m_completer); //模糊匹 m_edit->setToolTip(“remind”); m_box->setLineEdit(m_edit); //与编辑m_edit绑定 m_box->setGeometry(11,12,width,higth); 2.2 实现结果手动输入处理意见
下拉框选择默认处理意见
模糊匹配
|
CopyRight 2018-2019 实验室设备网 版权所有 |