分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

在之前的例子中做一些修改,首先不显示ListViewModel数据,当点击鼠标后,显示数据。

几个要点:

用Q_INVOKABLE 创建C++的方法,这样可以在Qml中直接调用

清除model里面的数据必须用beginResetModel和endResetModel方法将清除代码包起来。

看一下完整的代码:

test.qml

import QtQuick 2.0import mylist 1.0ListView {    width: 180; height: 200    model: PeopleListModel {        id: model1    }    delegate: Text {        text: name + ": " + number    }    MouseArea {        anchors.fill: parent        onClicked: model1.reload();    }    }

plugin.cpp

#include <QtQml/QQmlExtensionPlugin>#include <QtQml/qqml.h>#include <qdebug.h>#include <qdatetime.h>#include <qbasictimer.h>#include <qcoreapplication.h>#include <QAbstractItemModel>#include <QStringList>#include <iostream>class People {public:  People(QString const & name, QString const & number)    : name_(name), number_(number) {  }  QString name() const {    return name_;  }  QString number() const {    return number_;  }private:  QString name_;  QString number_;};class PeopleListModel : public QAbstractListModel {  Q_OBJECTpublic:  enum PeopleRoles {    NameRole = Qt::UserRole + 1,    NumberRole  };  PeopleListModel(QObject * parent = 0)    : QAbstractListModel(parent) {    /*    People p1("Dean", "186***");    addPeople(p1);    People p2("Crystal", "186***");    addPeople(p2);*/  }  void addPeople(People const & p) {    beginInsertRows(QModelIndex(), rowCount(), rowCount());    values_ << p;    endInsertRows();  }  int rowCount(QModelIndex const & parent = QModelIndex()) const {    return values_.count();  }  QVariant data(QModelIndex const & index, int role = Qt::DisplayRole) const {    std::cout << "data()" << std::endl;    std::cout << "index row: " << index.row() << " index column: " << index.column() << std::endl;    if (index.row() < 0 || index.row() >= values_.count()) {      std::cout << "s1" << std::endl;      return QVariant();    }    People const & p = values_[index.row()];    std::cout << "role: " << role << std::endl;    if (role == NameRole) {      return p.name();    }    else if (role == NumberRole) {      return p.number();    }    return QVariant();  }  Q_INVOKABLE void reload() {    std::cout << "--------------------" << std::endl;    std::cout << "reload()" << std::endl;    beginResetModel();    values_.clear();    endResetModel();    People p1("Dean", "176***");    addPeople(p1);    People p2("Crystal", "176***");    addPeople(p2);    std::cout << "values count: " << values_.count() << std::endl;  }protected:  QHash<int, QByteArray> roleNames() const {    QHash<int, QByteArray> roles;    roles[NameRole] = "name";    roles[NumberRole] = "number";    return roles;  }private:  QList<People> values_;};class QExampleQmlPlugin : public QQmlExtensionPlugin {  Q_OBJECT  Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtension.PeopleListModel")  public:  void registerTypes(char const * uri) {    qmlRegisterType<PeopleListModel>(uri, 1, 0, "PeopleListModel");  }};#include "plugin.moc"

运行效果,刚开始什么都没有,点击后出现数据。

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

Qt ListView 刷新数据相关推荐

  1. android listview 刷新数据,ListView中notifyDataSetChanged()刷新数据不更新原因分析

    标题 : 不作死就不会死!!!!!! 类 : ActivityA,ActivityB,BookListAdapter,Book,HttpManager 测试顺序 : ActivityA >> ...

  2. Android列表分页功能的实现,往下拉时刷新数据(显示正在加载中)

    1.需要在AndroidManifest.xml清单文件中获取InterNet权限 2.重写ListView控件(创建RefreshListView.java,继承自ListView) package ...

  3. 关于ListView中notifyDataSetChanged()刷新数据不更新原因

    使用Listview的时候: 当要动态显示更改后的 数据 (例如 数据 库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的 数据 . ...

  4. listview刷新_Flutter NestedScrollView 滑动折叠头部下拉刷新效果

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. 本实例运行效果如下 : //启动函数void main() { runApp(Root ...

  5. android 下拉刷新数据,如何剥离Android页面下拉刷新、加载下一页等逻辑?

    最近碰到一个新的页面控制需求:下拉刷新如果失败,listview上面的数据需要保留,然后悲剧的发现之前写的NetFragment和ListNetFragment都不能覆盖这种逻辑,又要重写了.痛定思痛 ...

  6. listview刷新(litepal)

    问题 如何单独刷新listview,并且不影响布局上的数据 litepal-到–>list数据表-到---->Adapter----到->显示在listview上. 要刷新listv ...

  7. ListView的数据排序示例

    ListView的数据排序示例 ListView中经常要用到对里面的条目的某一个数据进行排序,比如商品的价格.销售量,机票的数量.价格等.并且有些还要对某些条目进行记录(删除或保留另用).这里简单实现 ...

  8. Angular的ChangeDetectorRef.detectChanges()实现angularJS的$apply()方法,强制刷新数据渲染

    在Javascript代码里,都是按照一定顺序来执行的,当轮到一个代码片段执行的时候,浏览器就只会去执行当前的片段,不会做任何其他的事情.所以有时候一些做得不是很好的网页,当点击了某个东西之后会卡住, ...

  9. html页面关闭前提示信息,【转】表单提交及关闭当前页面并刷新数据

    在DWZ文档中,对于DWZ框架Ajax无刷新表单提交处理流程描述如下: 1.       ajax表单提交给服务器 2.       服务器返回一个固定格式json结构 3.       js会调函数 ...

  10. 解决ViewPager缓存导致不能实时刷新数据

    ViewPager+Fragment,但是Fragment有个不好或者太好的地方.例如你在ViewPager中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮 ...

最新文章

  1. R使用Iris数据集构建SVM分类器
  2. AI时代,企业如何利用机器学习技术驱动业务发展?
  3. 1013. 数素数 (20)
  4. 子域名/目录暴力工具Gobuster
  5. Spring Data JPA单元测试 Not a managed type
  6. 对象序列化(六):应用实例-WPF对象的XAML序列化
  7. python编程菱形_Python打印“菱形”星号代码方法
  8. 集合源码阅读:LinkedList
  9. 安卓线程同步面试_Android面试题
  10. 基于springboot的美食系统
  11. java鼠标点击按钮_Java 模拟鼠标事件 java中控制鼠标点击的方法
  12. 软件测试用例设计方法等价划分法
  13. Jmeter使用Dubbo插件测试RPC接口
  14. 系统设计系列之如何设计一个短链服务
  15. 数据挖掘 - 二手车交易价格预测(阿里天池)
  16. 红茶保质期一年半,我都放了五年了,打开还有茶味,能喝吗?
  17. 计算机游戏攻略32关,保卫萝卜3游乐场第32关通关攻略 保卫萝卜3分享
  18. 湖南省第十届蓝狐网络杯大学生计算机程序设计竞赛,2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解...
  19. java关键字8:implement关键字
  20. EIE结构与算法映射

热门文章

  1. caffe 安装指南
  2. u深度重装系统详细教程_u深度一键还原精灵电脑重装系统使用教程
  3. 深度学习——day8 读论文(2022 硕士毕业论文)大规模车辆路径问题的深度强化学习算法研究
  4. 台湾医院:自主研发移动护理系统 跟软件公司说拜拜
  5. 纯CSS实现的炫酷HOVER效果
  6. 初中计算机表格知识点,初中信息技术考试知识点.doc
  7. 静态路由的简单案例(华为),一看就会
  8. Deeping Learning for self-driving cars
  9. Win10 PowerToys官方免费效率小工具集
  10. php酒店系统论文,PHP酒店网站管理系统毕业论文