058-第三代软件开发-文件Model

头图

第三代软件开发-文件Model

文章目录

  • 第三代软件开发-文件Model
    • 项目介绍
    • 文件Model

关键字: QtQml关键字3关键字4关键字5

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏在第三代软开发更新完将涨价

文件Model

这个就是想做一个通用一点的model,因为我需要知道我的文件夹下的mp4 和pdf 文件,这两个除了类型不同,其他功能都相同,所以就有了这个,代码如下

头文件

#ifndef XXXX_FILEMODEL_H
#define XXXX_FILEMODEL_H#include <QAbstractListModel>class XXXX_FileModel : public QAbstractListModel
{Q_OBJECTenum FileType{Name,};Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged FINAL)public:explicit XXXX_FileModel(QObject *parent = nullptr);// Header:QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override;// Basic functionality:int rowCount(const QModelIndex &parent = QModelIndex()) const override;// Fetch data dynamically:bool hasChildren(const QModelIndex &parent = QModelIndex()) const override;bool canFetchMore(const QModelIndex &parent) const override;void fetchMore(const QModelIndex &parent) override;QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;QHash<int,QByteArray> roleNames() const override;// Editable:bool setData(const QModelIndex &index, const QVariant &value,int role = Qt::EditRole) override;Qt::ItemFlags flags(const QModelIndex& index) const override;// Add data:bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;// Remove data:bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;QString path() const;void setPath(const QString &newPath);signals:void pathChanged();protected:void updateFile();private:QString m_path = "/home";QStringList m_fileList;
};#endif // XXXX_FILEMODEL_H

源文件

#include "XXXX_filemodel.h"
#include "qdebug.h"
#include "qdir.h"XXXX_FileModel::XXXX_FileModel(QObject *parent): QAbstractListModel(parent)
{updateFile();
}QVariant XXXX_FileModel::headerData(int section, Qt::Orientation orientation, int role) const
{// FIXME: Implement me!
}bool XXXX_FileModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role)
{if (value != headerData(section, orientation, role)) {// FIXME: Implement me!emit headerDataChanged(orientation, section, section);return true;}return false;
}int XXXX_FileModel::rowCount(const QModelIndex &parent) const
{// For list models only the root node (an invalid parent) should return the list's size. For all// other (valid) parents, rowCount() should return 0 so that it does not become a tree model.if (parent.isValid())return 0;// FIXME: Implement me!return m_fileList.count();
}bool XXXX_FileModel::hasChildren(const QModelIndex &parent) const
{// FIXME: Implement me!
}bool XXXX_FileModel::canFetchMore(const QModelIndex &parent) const
{// FIXME: Implement me!return false;
}void XXXX_FileModel::fetchMore(const QModelIndex &parent)
{// FIXME: Implement me!
}QVariant XXXX_FileModel::data(const QModelIndex &index, int role) const
{if (!index.isValid())return QVariant();// FIXME: Implement me!if(m_fileList.count() > 0)return m_fileList.at(index.row());return QVariant();
}QHash<int, QByteArray> XXXX_FileModel::roleNames() const
{QHash<int,QByteArray> roles;roles.insert(FileType::Name,"name");return roles;
}bool XXXX_FileModel::setData(const QModelIndex &index, const QVariant &value, int role)
{if (data(index, role) != value) {// FIXME: Implement me!emit dataChanged(index, index, {role});return true;}return false;
}Qt::ItemFlags XXXX_FileModel::flags(const QModelIndex &index) const
{if (!index.isValid())return Qt::NoItemFlags;return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; // FIXME: Implement me!
}bool XXXX_FileModel::insertRows(int row, int count, const QModelIndex &parent)
{beginInsertRows(parent, row, row + count - 1);// FIXME: Implement me!endInsertRows();return true;
}bool XXXX_FileModel::removeRows(int row, int count, const QModelIndex &parent)
{beginRemoveRows(parent, row, row + count - 1);// FIXME: Implement me!endRemoveRows();return true;
}QString XXXX_FileModel::path() const
{return m_path;
}void XXXX_FileModel::setPath(const QString &newPath)
{if (m_path == newPath)return;m_path = newPath;emit pathChanged();updateFile();
}void XXXX_FileModel::updateFile()
{QDir folder(m_path);m_fileList.clear();m_fileList = folder.entryList(QDir::Files);foreach(QString file, m_fileList){qDebug() << file;}
}

博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第90期】基于matlab的OQPSKsimulink仿真,对比初始信号和解调信号输出星座图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 正交偏移二进制相移键控&#xff08;OQPSK, Orthogonal Quadrature Phase Shift Keying&#xff09;是一种数字调制技术&#xff0c;主要用于高效无线数据传输。它是传统二进制相移键控&#xff08;BPSK&#xff09;的一个变…

单链表原来是这样实现的!

文章目录 前言1. 链表的概念及结构1.1在链表里&#xff0c;每节“车厢”是什么样的呢&#xff1f;1.2为什么还需要指针变量来保存下⼀个节点的位置&#xff1f; 2. 单链表的实现1. 定义结构体(Seqlist)2. 打印函数(SLTPrint)小插曲&#xff0c;创建节点函数CreateNode3. 尾插函…

嵌入式的学习需要合理规划时间

低级的欲望放纵即可获得&#xff0c;高级的欲望只有克制才能达成。——卡耐基1、粉丝的误会 很多粉丝&#xff0c;问我&#xff0c; "胡老师我想报您的培训班。" ... 得知我知识业余时间写文章&#xff0c;紧接着又会问&#xff0c; "jg单位这么清闲啊&#…

预制构件二维码如何生成?

PC预制构件张贴二维码标识牌&#xff0c;可实现预制构建基本信息、设计图纸、安装说明书信息展示微信扫一扫即可查看预制件信息&#xff0c;大大提高施工的精度和效率&#xff1b;同时也可以实现预制生成过程管理、运输过程管理、安装过程管理、后期运维管理实现预制件的过程质…

Windows安装mysql8.0

官网地址&#xff1a;MySQL :: MySQL Community Downloads 选择相应版本信息下载 默认选择点击下一步 默认配置点击next 设置密码 默认配置

进程并发-信号量经典例题-吸烟者问题

1 题目描述 吸烟者问题 在一个房间内有三个吸烟者和一个香烟供应者。为了制造并抽掉香烟&#xff0c;每个吸烟者需要三样物品&#xff1a;烟草、纸和火柴&#xff0c;供应者有丰富物品提供。在三个吸烟者中&#xff0c;第一个有自己的烟草&#xff0c;第二个有自己的纸&#…

Linux系统管理:WinSCP 安装与使用

目录 一、实验 1.下载WinSCP 2.安装WinSCP 3.使用WinSCP 一、实验 1.下载WinSCP &#xff08;1&#xff09;地址 Downloading WinSCP-6.1.2-Setup.exe :: WinSCP 2.安装WinSCP &#xff08;1&#xff09;选择安装程序模式 &#xff08;2&#xff09;点击 &#xff08;3…

机器学习库:pandas

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 文章目录 写在开头 基本数据格式 DataFrame 数据选取 iloc 数据描述 head describe 数据合并 merge 数据删除 drop drop删除多列 处理缺失…

建造者设计模式

3. 建造者设计模式 3.1 原理 Builder 模式&#xff0c;中文翻译为建造者模式或者构建者模式&#xff0c;也有人叫它生成器模式。 建造者模式是用来创建一种类型的复杂对象&#xff0c;通过设置不同的可选参数&#xff0c;“定制化”地创建不同的对象。 创建者模式主要包含以…

SpringBoot进阶——解释springboot的自动配置原理

相关的博客文章如下&#xff1a; SpringBootApplication注解的理解——如何排除自动装配 & 分布式情况下如何自动加载 & nacos是怎么被发现的 引出 1.spring.factories文件存储能够进行自动配置的Bean信息&#xff1b; 2.EnableAutoConfiguration关闭数据源的自动配置…

Flask学习二:项目拆分、请求与响应、cookie

教程 教程地址&#xff1a; 千锋教育Flask2框架从入门到精通&#xff0c;Python全栈开发必备教程 老师讲的很好&#xff0c;可以看一下。 项目拆分 项目结构 在项目根目录下&#xff0c;创建一个App目录&#xff0c;这是项目下的一个应用&#xff0c;应该类似于后端的微服…

es6字符串模板之标签化模板

es6字符串模板 我们经常搞前端开发工作的都会用到。它可以保留字符串换行格式&#xff0c;还能接受变量。这个给前端的字符串拼接带来了非常大的方便。但是还有一种用法可能是我们平时还是没有怎么用到的。 styled-components 在项目中熟悉使用react的童鞋可能会用过styled-…

灯塔的安装

Docker 安装 docker 安装参考&#xff1a;https://docs.docker.com/engine/install/ shell脚本: curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh灯塔安装 mkdir docker-ARL;cd docker-ARL curl https://bootstrap.pypa.io/get-pip.py -o get-pip…

一些权限方面的思考

一些权限方面的思考 背景说明自定义注解解析自定义注解 背景 鉴权可以通过切面做抽取 说明 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 都是一些伪代码, 不能直接使用, 提供一种思路. 自定义注解 自定义注解: Permission …

【Linux学习】基础IO

目录 八.系统文件IO 8.1 前言 8.2 C语言文件IO C语言常用的基本函数 C语言默认打开的的三个流 8.3 系统文件IO open接口 close接口 write接口 read接口 8.4 C语言文件IO与系统文件IO的关系 八.系统文件IO 8.1 前言 系统文件 I/O&#xff08;输入/输出&#xff09;是指在…

pandas 如何获取dataframe的行的数量

pandas的dataframe提供了多种方法获取其中数据的行的数量&#xff0c;本偏文章就是介绍几种获取dataframe行和列出量的方法。 为了能够详细说明如何通过代码获取dataframe的行数和列数&#xff0c;需要先创建一个dataframe如下&#xff1a; import pandas as pdtechnologies …

C++设计模式之策略模式

策略模式 介绍示例示例测试运行结果应用场景优点总结 介绍 策略模式是一种行为设计模式。在策略模式中&#xff0c;可以创建一些独立的类来封装不同的算法&#xff0c;每一个类封装一个具体的算法&#xff0c;每一个封装算法的类叫做策略(Strategy)&#xff0c;为了保证这些策…

NX二次开发UF_CURVE_ask_wrap_curve_parents 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_wrap_curve_parents Defined in: uf_curve.h int UF_CURVE_ask_wrap_curve_parents(tag_t curve_tag, tag_t * defining_face, tag_t * defining_plane, tag_t * defin…

18. Python 数据处理之 Numpy

目录 1. 简介2. 安装和导入Numpy3. ndarray 对象4. 基本运算5. 索引、切片和迭代6. 条件和布尔数组7. 变换形状8. 操作数组 1. 简介 数据分析的流程概括起来主要是&#xff1a;读写、处理计算、分析建模和可视化4个部分。 Numpy 是Python 进行科学计算&#xff0c;数据分析时…

C#每天复习一个重要小知识day10:静态类

1.静态类的概念 用static修饰的类。 静态类其实很简单&#xff0c;把它的特点和作用牢记就行了。 2.静态类的特点 1&#xff09;只能包含静态成员 //访问修饰符是啥自己定&#xff0c;但工具类里面的成员变量和成员方法一般都是用public的&#xff0c;除非你有某种需求&am…