提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-04-29 11:15:07.653|阅读 25 次
概述:本文将为大家介绍如何使用Qt Widget小部件如何实现一个快捷编辑器,欢迎下载最新版组件体验~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。
快捷编辑器示例展示了如何创建一个基本的读写层次模型,来与Qt的标准视图和QKeySequenceEdit类一起使用。
Qt技术交流群:166830288 欢迎一起进群讨论
Qt的模型/视图架构为视图提供了一种标准的方式来操作数据源中的信息,使用数据的抽象模型来简化和标准化访问数据的方式。快捷编辑器模型将操作表示为项目树,并允许视图通过基于索引的系统访问此数据。更一般地说,可以使用模型以树结构的形式表示数据,方法是允许每个项作为子项表的父项。
我们用来表示数据结构的数据结构采用由ShortcutEditorModelItem对象构建的树表单,每个ShortcutEditorModelItem表示树视图中的一个项,并包含两列数据。
快捷编辑器结构
数据使用ShortcutEditorModelItem对象存储在模型内部,这些对象在基于指针的树结构中链接在一起。通常每个ShortcutEditorModelItem都有一个父项,并且可以有许多子项。但是树结构中的根项没有父项,也不会在模型之外被引用。
每个ShortcutEditorModelItem都包含有关其在树结构中的位置的信息,它可以返回父项及其行号。有了这些随时可用的信息,就可以更容易地实现模型。
由于树视图中的每个项通常包含几列数据(在本例中是一个名称和一个快捷方式),因此将这些信息存储在每个项中是很自然的。为简单起见,我们将使用一个QVariant对象列表来存储项目中每一列的数据。
使用基于指针的树结构意味着,当将模型索引传递给视图时,我们可以记录索引中相应项的地址(参见QAbstractItemModel::createIndex()),并稍后使用QModelIndex::internalPointer()检索它。这使得编写模型更容易,并确保引用同一项的所有模型索引具有相同的内部数据指针。
有了适当的数据结构,我们就可以用最少的额外代码创建树模型,为其他组件提供模型索引和数据。
ShortcutEditorModelItem类定义如下:
这个类是一个基本的c++类,它不继承QObject,也不提供信号和插槽。它用于保存qvariables列表,其中包含列数据和关于其在树结构中的位置的信息。这些函数提供以下特性:
父项和列数据存储在parentItem和itemData私有成员变量中,childItems变量包含一个指向该项自身子项的指针列表。
ShortcutEditorModel类定义如下:
class ShortcutEditorModel : public QAbstractItemModel { Q_OBJECT class ShortcutEditorModelItem { public: explicit ShortcutEditorModelItem(const QList<QVariant> &data, ShortcutEditorModelItem *parentItem = nullptr); ~ShortcutEditorModelItem(); void appendChild(ShortcutEditorModelItem *child); ShortcutEditorModelItem *child(int row) const; int childCount() const; int columnCount() const; QVariant data(int column) const; int row() const; ShortcutEditorModelItem *parentItem() const; QAction *action() const; private: QList<ShortcutEditorModelItem *> m_childItems; QList<QVariant> m_itemData; ShortcutEditorModelItem *m_parentItem; }; public: explicit ShortcutEditorModel(QObject *parent = nullptr); ~ShortcutEditorModel() override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; QModelIndex parent(const QModelIndex &index) const override; int rowCount(const QModelIndex &index = QModelIndex()) const override; int columnCount(const QModelIndex &index = QModelIndex()) const override; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; void setActions(); private: void setupModelData(ShortcutEditorModelItem *parent); ShortcutEditorModelItem *m_rootItem; };
这个类类似于提供读写模型的QAbstractItemModel的大多数其他子类,只有构造函数的表单和setupModelData()函数是特定于这个模型的。此外,我们还提供了一个析构函数,以便在模型被销毁时进行清理。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
一个跨平台的C++图形用户界面应用程序开发框架。
QtitanChart性能优异的跨平台Qt类图表组件
QtitanRibbon专业全面 & 实现Qt技术的跨平台Ribbon UI组件
QtitanDataGrid一个独特的Qt开发框架产品,吸收了Delphi、C++以及其他语言的优点
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢