QML 用QSortFilterProxyModel实现搜索功能
搞了一晚上终于实现了,写个博客纪念一下吧。
c++部分的代码:
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QtQml>
...
#include "bookmodel.h"
int main(int argc, char *argv[])
{
...
qmlRegisterType<BookModel>("Backend", 1, 0, "BookModel");//向qml注册类型
BookModel *bookModel = new BookModel();//这是自己定义的类
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel();
...
bookModel->read(io->text()["book"]);//io是自己定义的读取json的类
QQmlApplicationEngine *engine = new QQmlApplicationEngine();
proxyModel->setSourceModel(bookModel);
//向qml传递变量
engine->rootContext()->setContextProperty("bookModel", bookModel);
engine->rootContext()->setContextProperty("proxyModel", proxyModel);
engine->load(QUrl(QLatin1String("qrc:/main.qml")));
return app.exec();
}
qml部分的代码:
Search是自己写的一个搜索框
import QtQuick 2.7
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.1
import QtQuick.Controls.Universal 2.1
import QtQuick.Window 2.1
import Backend 1.0
LDialog{//LDialog是自己修改过的的对话框Dialog
title: "查找"
width: 460
height: 180
signal search(int range, string text)
Row{
spacing: 20
ComboBox{
id: combo
model:[qsTr("书名"),qsTr("出版社"),qsTr("作者"),qsTr("简介"),qsTr("购书日期"),qsTr("id"),qsTr("ISBN号"),qsTr("价格")]
}
TextField {
id: word
width: 200
}
Button {
id: searchBtn
text: qsTr("查找")
onClicked: {
var comap=new Array(BookModel.NameRole,BookModel.PublishRole,BookModel.AuthorRole,
BookModel.BriefRole,BookModel.BuyTimeRole,BookModel.IdRole,
BookModel.IsbnRole,BookModel.PriceRole);//这里的Role是BookModel类里面的一个enum
search(comap[combo.currentIndex],word.text);
}
}
}
}
使用时:
Search{
id: findBookDialog
onSearch: {
proxyModel.filterRole=range;//这个filterRole是proxyModel搜索的范围,也就是指定BookModel中的一个属性
proxyModel.setFilterFixedString(text);//设置搜索内容
bookView.model=proxyModel;//设置展示的内容为搜索筛选后的
}
onRejected: {//取消时显示原来的内容
bookView.model=bookModel;
}
}
QML 用QSortFilterProxyModel实现搜索功能的更多相关文章
- Android搜索功能的案例,本地保存搜索历史记录......
开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...
- Yii 1开发日记 -- 搜索功能及Checkbox的实现
用yii 1实现后台的搜索功能,效果如下图: 1.模型中: public function search() { $criteria = new CDbCriteria; //独立高级搜索 if(is ...
- iOS--- UITableView + UISearchDisplayController - - - - -实现搜索功能
iOS中UISearchDisplayController用于搜索,搜索栏的重要性我们就不说了,狼厂就是靠搜索起家的,现在越来越像一匹没有节操的狼,UC浏览器搜索栏现在默认自家的神马搜索,现在不管是社 ...
- SharePoint 2013 搜索功能,列表项目不能完全被索引
描述 最近一个站点,需要开启搜索功能,然后创建内容源,开始爬网,发现列表里只有一部分被索引,很多项目没有被索引,甚是奇怪,如下图(其实列表里有80几条项目). 首先爬网账号是系统账号.服务器管理员,所 ...
- idea 光标变成粗体且当前文件搜索功能无法使用的问题
今天安装了idea最新版,安装完成后发现光标变成了粗体,并且快捷键在使用时出现了问题,比如:ctrl+F搜索功能无法使用 经过反复修改配置也无法改善情况,后来一次重启看到下面小窗弹出有关vim的一个提 ...
- js table的笔记,实现添加 td,实现搜索功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- MMS搜索功能修改
高通平台的MMS源码中提供了搜索功能,但要先选择分类(名字,号码,信息内容,彩信主题),再输入字符,根据分类进行搜索. 而在Contacts中却不需要分类,直接根据输入字符搜索任意匹配字段.相比之下, ...
- ILSpy搜索功能加强版
1.修改搜索功能,增加如下的额外搜索选项 A.按文本搜索(默认选项) B.按通配符搜索 C.按正则表达式搜索 2.搜索增加如下特性: A.可以按照名字空间检索特定名字空间下的所有类. B.修正了官方版 ...
- PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))
PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a) robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...
随机推荐
- A direct formulation for sparse PCA using semidefinite programming
目录 背景 Sparse eigenvectors(单个向量的稀疏化) 初始问题(low-rank的思想?) 等价问题 最小化\(\lambda\) 得到下列问题(易推) 再来一个等价问题 条件放松( ...
- [已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。
想在python代码中输出汉字.但是老是出现SyntaxError: Non-ASCII character '\xe4' in file test.py on line , but no encod ...
- 【转】Linux下cp: omitting directory `XXX'问题解决
在linux系统中复制文件夹时提示如下: Shell代码 [root@idtp4 site-packages]# /site-packages/ cp: omitting directory ‘yag ...
- Java 数据库操作
目录 Java数据库组织架构 下载驱动包 连接数据库 连接数据库的三个步骤 连接数据库的高开销 Statement接口介绍 PreparedStatement类 使用PreparedStatement ...
- Linux系统mysql使用(二)
一.查看某数据库的表 # 假设此时数据库名为hiveuse hive; show tables;
- Tomcat集成Memcached Session Manager方案
http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/2.3.2/memcached-session-ma ...
- asp.net Json序列化
Json作为一种数据传输格式与标准被广泛的使用在项目开发中,可以说简直离不开它.那么怎么来生成JSON格式的数据就成了我们首先需要解决的问题这里我们使用.net. 首先是获取数据 public ban ...
- POI解析Excel代码
// 批量区域数据导入 @Action(value = "area_batchImport") public String batchImport() throws IOExcep ...
- Oracle列转行函数LISTAGG()
--Oracle列转行函数LISTAGG() with tb_temp as( select 'China' 国家,'Wuhan' 城市 from dual union all select 'Chi ...
- vue cli3 vue.config.js 配置详情
module.exports = { // 基本路径 baseUrl: process.env.NODE_ENV === 'production' ? '/' : '/', ...