当前位置: 首页 > news >正文

龙岗网站制作新闻做电商有哪些网站有哪些

龙岗网站制作新闻,做电商有哪些网站有哪些,网站建设与管理 教学大纲,建网站需要什么条件Fetch More Example这个例子说明了如何在视图模型上添加记录。 这个例子由一个对话框组成,在Directory的输入框中,可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。 当有大量数据时,需要对视图模型进行批量增…

Fetch More Example这个例子说明了如何在视图模型上添加记录。

这个例子由一个对话框组成,在Directory的输入框中,可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。

当有大量数据时,需要对视图模型进行批量增加。

此案例,实现了FileListModel类,此类包含了一个视图模型,这个视图模型获取路径下的文件。

下面来看下FileListModel的代码。

FileListModel Class Definition

FileListModel继承了QAbstractListModel并且存储了路径信息。只有视图自己请求添加项时,才会进行添加。

 class FileListModel : public QAbstractListModel{Q_OBJECTpublic:FileListModel(QObject *parent = 0);int rowCount(const QModelIndex &parent = QModelIndex()) const override;QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;signals:void numberPopulated(int number);public slots:void setDirPath(const QString &path);protected:bool canFetchMore(const QModelIndex &parent) const override;void fetchMore(const QModelIndex &parent) override;private:QStringList fileList;int fileCount;};

比较关键的2个函数是fetchMore()和canFetchMore(),这两个函数都是从QAbstractItemModel中继承下来的。当需要新增模型时,这2个函数就会被触发。

setDirPath()函数设置了当前模型的工作目录。当需要批量设置模型时,就会发出numberPopulated()信号。

所有文件条目都放到fileList里面,fileCount统计条目的数量。

FileListModel Class Implementation

首先来看下setDirPath()。

 void FileListModel::setDirPath(const QString &path){QDir dir(path);beginResetModel();fileList = dir.entryList();fileCount = 0;endResetModel();}

使用QDir获取目录内容。当要从模型中移除所有数据时需要通知QAbstractItemModel。

 bool FileListModel::canFetchMore(const QModelIndex & /* index */) const{if (fileCount < fileList.size())return true;elsereturn false;}

当需要更多项时,canFetchMore()函数会被触发。当不需要新增时此函数返回true,否则返回false。fetchMore()函数如下:

 void FileListModel::fetchMore(const QModelIndex & /* index */){int remainder = fileList.size() - fileCount;int itemsToFetch = qMin(100, remainder);if (itemsToFetch <= 0)return;beginInsertRows(QModelIndex(), fileCount, fileCount+itemsToFetch-1);fileCount += itemsToFetch;endInsertRows();emit numberPopulated(itemsToFetch);}

首先获取每一项的数量。beginInsertRow()和endInsertRow()在QAbstractItemModel中插入新行时,必须要调用的,最后emit numberPopulated()用于更新界面。

最后是rowCount()和data()

int FileListModel::rowCount(const QModelIndex & /* parent */) const{return fileCount;}QVariant FileListModel::data(const QModelIndex &index, int role) const{if (!index.isValid())return QVariant();if (index.row() >= fileList.size() || index.row() < 0)return QVariant();if (role == Qt::DisplayRole) {return fileList.at(index.row());} else if (role == Qt::BackgroundRole) {int batch = (index.row() / 100) % 2;if (batch == 0)return qApp->palette().base();elsereturn qApp->palette().alternateBase();}return QVariant();}

rowCount()函数是已经添加了的新行,不是目录中的条目数。

data()函数,从fileList中返回适当的条目。使用不同的背景颜色来区分。

http://www.yayakq.cn/news/640260/

相关文章:

  • 外贸led网站建设企业建设网站哪家好
  • 乌拉圭网站后缀做公司网站主要需要什么科目
  • 合肥高端网站开发深圳网络推广优化
  • 凡科网站建设的技巧深圳建设工程交易中心网站
  • 企业门户网站网站怎么获得合二为一的创意产品设计
  • 贵阳网站制作费用百度云图片转wordpress
  • 点击运行显示网站正在建设前端学习路线
  • 网站建设网站制作网页vps主机怎么建设网站
  • 长沙市制作网站深圳企业社保网站官网
  • 网站源码论坛wordpress 媒体库分类
  • 深圳 商城 网站建设php建设网站工具
  • 如何在阿里云上做网站网站运营与建设
  • 做淘宝客网站用什么程序最好衡阳房产网
  • 网站基础功能介绍ui设计原理
  • 织梦官方网站图文排版模板
  • 做果蔬零售的网站教育机构客户管理系统
  • 网站服务器怎么做安全防护网页版传奇有哪些
  • 网站建设 佛山徐州cms模板建站
  • 手机 网站制作如何做网站卖连接
  • 怎样做自己的vip解析网站微企点建好网站后要怎么做
  • 网站如何添加统计代码楼盘网站开发
  • 网站建设制作 南京公司匿名聊天网站怎么做
  • 使页面具有动态效果的网站建设技术是天元建设集团有限公司中标情况分析
  • 网站开发 网站设计一站式织梦网站模板
  • 手机怎么查看网站代码实现的榆林北京网站建设
  • 微网站栏目设置能够做外贸的网站有哪些问题
  • 做婚恋网站有哪些邯郸市建设局官方网站
  • 做电脑网站用什么软件网站在线优化
  • 网站培训培训班风铃制作
  • 企业网站托管服务公司一个服务器下怎么做两个网站吗