写点什么

Qt | 深入了解 Qt 的视图类

作者:YOLO.
  • 2022 年 10 月 10 日
    河北
  • 本文字数:916 字

    阅读完需:约 3 分钟

Qt | 深入了解Qt的视图类

前言:

视图是用来将模型中的数据项展示到界面上的。QAbstractItemView 提供了一个标准的视图接口,以及使用了模型索引提供了一种通用的方法来表示数据。视图通常管理从模型获取的数据的整体布局,它们可以自己渲染独立的数据项,也可以使用委托来处理渲染和编辑。

视图除了显示数据,还可以处理项目间的导航,以及项目的选择行为等。支持选择单个项目(QAbstractItemView::SelectItems)、只选择行(QAbstractItemView::SelectRows)、只选择列(QAbstractItemView::SelectColumns)。

对于一些视图,如 QTableView 和 QTreeView,在显示项目的同时还可以显示标头。这是通过 QHeaderView 类实现的,它们使用 QAbstractItemModel::headerData()函数从模型中获取数据,然后使用一个标签显示标头信息。

Qt 中已经提供了一些线程的视图:QListViewQTableViewQTreeView。这三个都是使用规范的格式来显示数据的,如果想要实现条形图或者饼图等特殊的显示方式,就需要重新实现视图类了。

处理项目选择:

  • 在视图中被选择的项目的信息存储在一个 QItemSelectionModel 实例中。

  • 视图中总有一个当前项目和一个被选择项目。在同一时间,一个项目可以既是当前项目,也是被选择项目。当前项目和被选择项目的区别:

  • 只能有一个当前项目。但是可以有多个被选择项目

  • 使用键盘导航或者鼠标按键可以切换当前项目。项目是否处于被选择状态取决于冀哥预先定义好的模式,例如:单项选择、多项选择等;

  • 按下 F2 键或者双击数百哦都可以编辑当前项目。当前项目可以通过指定一个范围来一起被使用;

  • 当前项目会显示焦点矩形被选择项目会使用选择矩形来表示

视图的使用:

//定义一个成员变量QTableView *tableView;//创建一个模型,并向模型中插入数据QStandardItemModel *model = new QStanderdItemModel(7, 4, this);for(int row = 0; row <7; ++row){    for(int column = 0; column < 4, ++column)    {        QStandardItem *item = new QStandardItem(QString("%1").arg(row*4+column));        model->setItem(row, column, item);    }}//将模型设置到视图中tableView = new QTableView;tableView->setModel(model);setCentralWidget(tableView);
复制代码

视图可以理解为一个部件,可以显示在界面中。

发布于: 刚刚阅读数: 3
用户头像

YOLO.

关注

还未添加个人签名 2022.05.06 加入

还未添加个人简介

评论

发布
暂无评论
Qt | 深入了解Qt的视图类_qt_YOLO._InfoQ写作社区