首页 Qt官方示例解析系列13:Chart饼图
文章
取消

Qt官方示例解析系列13:Chart饼图

展示custom view for model/view 框架

使用了QAbstractItemModel 和 QAbstractItemView

QStandardItemModel是一个可以包含任意数据的通用模型

使用QSplitter作为中心控件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
splitter->setStretchFactor(0, 0);
splitter->setStretchFactor(1, 1);当分割窗口大小改变时,表格视图的大小保持不变,饼图视图的大小会相应改变。
例如,如果有两个窗口小部件,它们的拉伸因子分别为12,那么当分割窗口的大小增加时,第一个窗口小部件的大小会增加1/3,第二个窗口小部件的大小会增加2/3。当分割窗口的大小减小时,第一个窗口小部件的大小会减小1/3,第二个窗口小部件的大小会减小2/3
      
headerView->setStretchLastSection(true); 设置表格视图的最后一列在表格视图被拉伸或压缩时,会自动改变其宽度以填充剩余的空间。
    
程序启动后,会loadFile加载文件。 从文件中读取数据,并将数据填充到一个QStandardItemModel对象中。  

QColor(#99e600)

主要代码是自定义实现了QAbstractItemView,此示例有点复杂。

rubberBand->setGeometry(QRect(origin, QSize()));大小是0。这意味着初始时rubberBand是不可见的

然后调用QRect.normalized方法,确保矩形的宽度和高度都是正数。

需要实现 moveCursor

统计行数:model()->rowCount(model()->parent(index));

edit函数只允许编辑第一列的项目。如果用户尝试编辑其他列的项目,那么这个函数会直接返回false,表示不处理编辑事件。

dataChanged函数:重新计算有效项目的数量和总值

isIndexHidden:是否隐藏,可以控制一列是否隐藏

scrollContentsBy 滚动条拖动时会执行

scrollTo 当编辑一个项的时候,会执行。主要功能是调整滚动条的位置,以确保给定的模型索引的项目在视口中可见。

setSelection 根据一个矩形选择模型中的项目

QPainterPath.toFillPolygon().toPolygon() 绘制路径转换为填充多边形,然后转换为多边形

QRegion 支持+=操作

paintEvent  绘制一个饼图视图,drawPie

QBrush background = option.palette.base();

QColor color = QColor(model()->data(colorIndex, Qt::DecorationRole).toString());

QItemSelectionModel->isSelected(index) 如果index是被选择的模型索引

itemDelegate()->paint(&painter, option, labelIndex);

欢迎评论交流

本文由作者按照 CC BY 4.0 进行授权