如何做明星的个人网站,wordpress 幻灯片加数字,贵阳网站建设培训,搜索引擎收录入口实现一个简单的模糊查询的逻辑#xff0c;输入框能提示相关项。
主要借助qt的QCompleter 类#xff08; Qt 框架中提供的一个用于自动补全和模糊搜索的类#xff09;#xff0c;结合一些控件#xff0c;比如QComboBox和QLineEdit#xff0c;实现模糊查询的功能。
1输入框能提示相关项。
主要借助qt的QCompleter 类 Qt 框架中提供的一个用于自动补全和模糊搜索的类结合一些控件比如QComboBox和QLineEdit实现模糊查询的功能。
1界面准备
1.1简单demo准备了一个QComboBox控件和QLineEdit分别用于模糊查询验证。 ui-m_cbb_select-setEditable(true);//QCombobox的基本设置 设置信息QStringList str_list;str_list我的测试我的祖国明天会更好今天仍需努力我还没有女朋友我喜欢小孩我想结婚了并不想摸鱼摸鱼是浪费人生大环境不好如何适应社会怎么拥有技术栈普通人啥也不是abc大小写测试ABC大小写测试;ui-m_cbb_select-addItems(str_list);ui-m_cbb_select-setCurrentText(str_list.at(3));1.2设置下拉框样式
QString style QString(QListView {font-family: \Arial\;font-size: 20px; outline: 0px;}QListView::item {background-color: lightgray;padding: 3px 0x 3px 5px;border-width: 0px;}QListView::item:selected {background-color: blue;color: white;});
//最后发现不设置 样式不生效
QStyledItemDelegate* d new QStyledItemDelegate;//NOTE 必须 否则部分style不生效ui-m_cbb_select-view()-setItemDelegate(d);
ui-m_cbb_select-setMaxVisibleItems(5);
ui-m_cbb_select-view()-setStyleSheet(style);2:借助QCompleter 类设置模糊查询
2.1构造 QCompleter 对象 两种方式均可也是设置了模糊查询的数据源
//直接用QStringList 构造QCompleter *comp new QCompleter(str_list);//QStringListModel方式也可以QStringListModel* model new QStringListModel();model-setStringList(str_list);QCompleter *comp new QCompleter();comp-setModel(model);2.2可以设置QCompleter的相关属性 comp-setCaseSensitivity(Qt::CaseInsensitive); //设置不区分大小写comp-setCompletionMode(QCompleter::PopupCompletion); //设置自动显示候选下拉框 InlineCompletion可以设置成行内提示一条
//comp-setCompletionMode(QCompleter::InlineCompletion); //lineEdit行内提示一条数据comp-setFilterMode(Qt::MatchStartsWith); //设置以前缀进行过滤
// comp-setFilterMode(Qt::MatchEndsWith); //以后缀进行过滤// QCompleter已经默认了按用户输入文本为前缀匹配了 更精确的控制可以用这个来实现connect(ui-m_le_select, QLineEdit::textEdited, [comp](const QString text){if (!text.isEmpty()) {comp-setCompletionPrefix(text); //设置自动完成前缀为用户输入的文本 comp-complete(); // 强制重新完成自动完成}});2.3设置QCompleter 帮助提示的样式 可以设置为下拉列表下拉table等
QString comStyle style QString(QListView::item:hover {background-color: yellow});
//方案一 这里参考 可以设置下拉时其他样式 如QTableView
// QListView* listView new QListView;
// listView-setStyleSheet(comStyle);
// comp-setPopup(listView);//方案二QAbstractItemView *popup comp-popup();//QStyledItemDelegate* d new QStyledItemDelegate;popup-setItemDelegate(d); //发现没有设置时 样式不生效 必须设置popup-setStyleSheet(comStyle);2.4把QCompleter加入对应的控件中。
ui-m_cbb_select-setCompleter(comp);
ui-m_le_select-setCompleter(comp);3其他行内提示一行效果 QCompleter *comp1 new QCompleter();comp1-setModel(model);comp1-setCompletionMode(QCompleter::InlineCompletion);ui-m_le_select_2-setCompleter(comp1);4测试demo
下拉框测试 QLineEdit测试 QLineEdit行内提示测试
注参考网上逻辑简单练习。