提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2023-03-31 10:39:24.640|阅读 70 次
概述:Qt提供了许多功能,可以以不同的方式显示预先和用户定义的项模型。本文将为大家介绍Qt框架中的一些项目视图示例,欢迎下载相关组件体验~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。
Qt提供了许多功能,可以以不同的方式显示预先和用户定义的项模型,模型/视图体系结构引入的功能分离为开发人员定制项的表示提供了更大的灵活性。
Qt技术交流群:166830288 欢迎一起进群讨论
本示例演示如何创建可以使用的编辑器。
在、或中编辑数据时,编辑器由委托创建和显示。QItemDelegate是Qt的项目视图使用的默认委托,它使用QItemEditorFactory为它创建编辑器,QItemEditorFactory提供的唯一实例默认安装在所有项目委托上。
项目编辑器包含实例的集合,这些实例为特定的QVariant数据类型生成编辑器(Qt中的所有模型都将数据存储在QVariant中),编辑器可以是任何Qt或自定义小部件。
在本例中,我们将创建一个编辑器(在ColorListEditor类中实现),它可以编辑QColor数据类型并由qitemdelegate使用。为此,我们创建了一个新的QItemEditorCreatorBase,该QItemEditorCreatorBase生成colorlisteditor并将其注册到一个新工厂,我们将其设置为默认的编辑器项工厂(唯一的工厂实例)。为了测试编辑器,我们实现了Window类,它显示一个QTableWidget,可以在其中编辑QColors。
窗口类实现
在窗口类中,为颜色编辑器创建项目编辑器基础,并将其添加到默认工厂。同时还添加了一个QTableWidget,可以在其中测试编辑器,它填充了一些数据并显示在窗口中。
仔细看看构造函数:
Window::Window() { QItemEditorFactory *factory = new QItemEditorFactory; QItemEditorCreatorBase *colorListCreator = new QStandardItemEditorCreator<ColorListEditor>(); factory->registerEditor(QMetaType::QColor, colorListCreator); QItemEditorFactory::setDefaultFactory(factory); createGUI(); }
是一个继承了的方便类,它的构造函数接受一个模板类,其实例从createWidget()返回。创建者使用一个构造函数,该构造函数将QWidget作为惟一参数;模板类必须提供这一点,这样,就不需要创建QStandardItemEditorCreator的子类。
在设置了新工厂之后,所有标准项目委托都将使用它(也就是,在设置新的默认工厂之前创建的委托)。
createGUI()函数设置表并用数据填充它。
ColorListEditor定义
ColorListEditor继承了,并让用户从弹出列表中选择一个QColor。
class ColorListEditor : public QComboBox { Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor USER true) public: ColorListEditor(QWidget *widget = nullptr); public: QColor color() const; void setColor(const QColor &color); private: void populateList(); };
管理编辑器和模型之间的交互,它从模型中检索要编辑的数据,并将来自编辑器的数据存储在模型中。编辑器编辑的数据存储在编辑器的用户数据属性中,委托使用Qt的属性系统按名称访问它。我们使用Q_PROPERTY宏声明用户数据属性,属性被设置为具有user关键字的用户类型。
ColorListEditor实现
ColorListEditor的构造函数简单地调用populateList(),稍后我们将讨论它,接下来看color()函数:
QColor ColorListEditor::color() const { return qvariant_cast<QColor>(itemData(currentIndex(), Qt::DecorationRole)); }
我们返回在组合框中选择的数据,数据存储在Qt::DecorationRole中,然后颜色也显示在弹出列表中(如上图所示)。
void ColorListEditor::setColor(const QColor &color) { setCurrentIndex(findData(color, Qt::DecorationRole)); }
findData()函数搜索组合框中的项目,并返回Qt::Decoration角色中有颜色的项目索引。
void ColorListEditor::populateList() { const QStringList colorNames = QColor::colorNames(); for (int i = 0; i < colorNames.size(); ++i) { QColor color(colorNames[i]); insertItem(i, colorNames[i]); setItemData(i, color, Qt::DecorationRole); } }
Qt通过名称知道一些预定义的颜色,只需循环遍历这些元素,用项填充编辑器。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
专业全面 & 实现Qt技术的跨平台Ribbon UI组件
QtitanDataGrid一个独特的Qt开发框架产品,吸收了Delphi、C++以及其他语言的优点
QtitanChart性能优异的跨平台Qt类图表组件
Qt一个跨平台的C++图形用户界面应用程序开发框架。
QtitanDocking一个用于允许创建类似于Microsoft可停靠用户界面的Qt框架组件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢