一、Qtitan 官网 devmachines
基于 Qt 框架的第三方 GUI 组件库,提供了多种功能的组件
主要包括:
- Ribbon:提供类似于 Microsoft Office 的功能区界面,支持多种主题和样式。
- DataGrid:用于显示和编辑大数据量的表格,支持排序、过滤和分组等功能。
- Chart:提供了多种类型的图表控件,可以用于数据可视化。
- Docking:提供灵活的停靠窗口管理功能,适用于复杂的多窗口应用。
- fastInfoset:
GridTableView 信号
sortingChanged()
focusRowChanged(int,int)
QWidget
└── GridBase (数据)基类
├── Grid 标准表格(在QtnGrid.h中定义)
├── CardGrid 卡片式(在QtnCardGrid.h中定义)
├── TreeGrid 树形(在QtnTreeGrid.h中定义)
└── 其他具体视图类
QObject
└──GridViewBase (视图)基类
├── GridTableView
│ ├── GridBandedTableView 多表头(Banded)
│ │ └── GridBandedTableViewVertical 垂直多表头
│ └── GridCardView 卡片式
│ └── GridCardViewVertical 垂直卡片式
└── GridTreeView 树形
GridColumnBase (列)基类
└──GridColumn - 普通列
└──GridTableColumn - 表格列
├──GridBandedTableColumn - 多表头--表格列
└──GridCardColumn - 卡片视图列
GridModelRecordsAbstract
└──GridModelRecords 存储了排序后的数据
├──GridModelRecordsTree
└──GridModelRecordsTable
编辑器相关类 :
- GridEditorBase - 编辑器基类
- GridEditorRepository - 编辑器仓库
- 各种具体编辑器如 GridStringEditorRepository 、 GridPictureEditorRepository 等
样式和渲染相关类 :
- GridStyleSheetInfo - 样式表信息
- GraphicControl - 图形控制基类
- GraphicPrimitive - 图形基元
数据模型相关 :
- GridModelController - 模型控制器
- GridRow - 行数据表示
排序机制:
GridTableView 的排序是通过 GridModelController 和 GridSortColumnRules 实现的
关键数据结构:
GridPersistentRow 可以跟踪行在排序前后的位置
getRowIndexByPersistentRow() 方法可以获取新位置
Qtitan::Grid *mGrid = new Qtitan::Grid(this);
Qtitan::GridTableView* mView = mGrid->view<Qtitan::GridTableView>();
auto control = mView->modelController();
Qtitan::GridRow gRow = control->getGridRow(row);
if (!mView->isRowShowing(gRow)) //行不在视口
mView->scrollToRow(gRow, false); //视口中
auto values = gRow.modelIndex(column).data(CUSTOM_ROLE).value<CUSTOM_DATA>();
Qtitan.pro
TEMPLATE = subdirs
include(src/shared/platform.pri)
CONFIG += ordered
QTN_BUILD_SOURCE = 0
QTN_COMPONENT_VERSION = $$fromfile($$PWD/src/grid/dbgrid.pri, QTN_COMPONENT_VERSION)
exists($$PWD/src/shared/QtitanGrid/QtitanGrid.pro) {
!isEmpty(QTN_COMPONENT_VERSION):QTN_BUILD_SOURCE = 1
}
equals(QTN_BUILD_SOURCE, 1) {
!build_pass {message(QtitanDataGrid source code being prepared for building...)}
SUBDIRS = src/shared/QtitanBase \
src/shared/QtitanFastInfoset \
src/shared/QtitanStyle \
src/shared/QtitanGrid
}
exists($$PWD/doc/qdocs.pri) {
include($$PWD/doc/qdocs.pri)
}