提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:鲍佳佳|2021-08-09 10:45:57.427|阅读 191 次
概述:此示例说明如何使用QAbstractItemModel派生模型作为条形系列的数据。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。
Qt组件推荐:
此示例说明如何使用QAbstractItemModel派生模型作为条形系列的数据。
要从Qt Creator运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。
让我们从创建 CustomTableModel 类的实例开始。CustomTableModel 类派生自QAbstractTableModel,它是为本示例而创建的。此类的构造函数使用图表示例所需的数据填充模型的内部数据存储。
m_model = new CustomTableModel;
我们现在有一个模型,其中包含我们希望在图表和QTableView 中显示的数据。首先,我们创建QTableView并告诉它使用模型作为数据源。为了很好地呈现数据,设置了表格视图的最小宽度,并将其标题调整大小模式更改为拉伸。
QTableView *tableView = new QTableView; tableView->setModel(m_model); tableView->setMinimumWidth(300); tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch); m_model->setParent(tableView);
现在我们需要一个QChart实例来在图表上显示相同的数据。我们还启用动画。它可以更轻松地查看对模型数据的修改如何影响图表。
QChart *chart = new QChart; chart->setAnimationOptions(QChart::AllAnimations);
下面代码的第一行创建了新的柱状图系列。变量 firstRow 和 rowCount 用于定义自定义模型映射。自定义映射允许仅从模型中获取部分数据。在这种情况下,从索引为 3 的行开始的 5 行数据。以下三行创建QVBarModelMapper类的实例,并指定条形集的数据应从索引为 1 到 4 的模型的列中获取(包括的)。为了在系列和模型之间建立连接,我们将这两个对象都设置为QVBarModelMapper。
最后将系列添加到图表中。
QBarSeries *series = new QBarSeries; int first = 3; int count = 5; QVBarModelMapper *mapper = new QVBarModelMapper(this); mapper->setFirstBarSetColumn(1); mapper->setLastBarSetColumn(4); mapper->setFirstRow(first); mapper->setRowCount(count); mapper->setSeries(series); mapper->setModel(m_model); chart->addSeries(series);
为了在QTableView中显示哪些数据对应于哪个条形集,本示例使用表格着色。当系列添加到图表时,它会根据当前选择的主题分配一种颜色。下面的代码从系列中提取该颜色并使用它来创建彩色QTableView。视图的着色不是QChart功能的一部分。
QString seriesColorHex = "#000000"; // get the color of the series and use it for showing the mapped area QList<QBarSet *> barsets = series->barSets(); for (int i = 0; i < barsets.count(); i++) { seriesColorHex = "#" + QString::number(barsets.at(i)->brush().color().rgb(), 16).right(6).toUpper(); m_model->addMapping(seriesColorHex, QRect(1 + i, first, 1, barsets.at(i)->count())); }
我们希望在图表的轴上放置类别来描述数据的含义。下一个片段展示了如何做到这一点。
QStringList categories; categories << "April" << "May" << "June" << "July" << "August"; QBarCategoryAxis *axisX = new QBarCategoryAxis(); axisX->append(categories); chart->addAxis(axisX, Qt::AlignBottom); series->attachAxis(axisX); QValueAxis *axisY = new QValueAxis(); chart->addAxis(axisY, Qt::AlignLeft); series->attachAxis(axisY);
为了避免设置QGraphicsScene,我们使用QChartView类为我们完成。所述QChart对象指针被用作一个参数QChartView构造函数。为了使渲染看起来更好,打开抗锯齿并设置图表视图小部件的最小尺寸。
QChartView *chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); chartView->setMinimumSize(640, 480);
最后,我们将两个小部件放在一个布局中,并将该布局用作应用程序布局。
QGridLayout *mainLayout = new QGridLayout; mainLayout->addWidget(tableView, 1, 0); mainLayout->addWidget(chartView, 1, 1); mainLayout->setColumnStretch(1, 1); mainLayout->setColumnStretch(0, 0); setLayout(mainLayout);
应用程序已准备就绪。尝试修改表格视图中的数据,看看它如何影响图表。
====================================================
想要了解或购买Qt正版授权的朋友,欢迎
Qt技术交流群现已开通,QQ搜索群号“765444821”或者扫描下方二维码即可加入
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢