
Qt模型视图框架
文章平均质量分 82
友善啊,朋友
这个作者很懒,什么都没留下…
展开
-
自定义QAbstractTableModel模型数据并使用自定义TableView显示
【代码】自定义QAbstractTableModel模型数据并使用自定义TableView显示。原创 2023-04-20 09:05:58 · 2733 阅读 · 0 评论 -
Qt SQL:QSqlQueryModel、QSqlTableModel
Qt SQL:QSqlQueryModel、QSqlTableModel原创 2022-09-07 13:29:35 · 3836 阅读 · 1 评论 -
Qt SQL:QSqlRelation、QSqlRelationalTableModel、QSqlRelationalDelegate
Qt SQL:QSqlRelation、QSqlRelationalTableModel、QSqlRelationalDelegate原创 2022-09-08 13:00:33 · 1258 阅读 · 0 评论 -
Qt模型视图框架:自定义委托(星形委托)
1、来自官方demo:Books星形是图片: QPixmap star;绘制:模型中存在的数据是int类型的,绘制的时候数字是几就绘制几个星号图片。设置星号个数:根据计算鼠标按下的位置确定值。2、来自官方demo:Star Delegate Example自定义一个表示星级的类:添加数据时:和上一个例子里面显示是星号但实际上在模型里面是int类型不同,这里在模型里面的数据类型是定义的StarRating类型。定义一个小部件用..原创 2021-08-21 14:50:42 · 931 阅读 · 0 评论 -
Qt模型视图框架:QModelIndex、QPersistentModelIndex、QModelRoleData、QModelRoleDataSpan
QModelIndex一、描述此类用作从 QAbstractItemModel 派生的项目模型的索引。项目视图、委托、选择模型使用索引来定位模型中的项目。模型使用 QAbstractItemModel::createIndex() 函数创建新的 QModelIndex 对象。可以使用 QModelIndex 构造函数构造无效的模型索引。在引用模型中的顶级项目时,无效索引通常用作父索引。模型索引是指模型中的项目,并包含指定它们在这些模型中的位置所需的所有信息。每个索引位于给定的行和列中,并且可原创 2021-08-21 12:29:19 · 4485 阅读 · 0 评论 -
Qt模型视图框架:QDataWidgetMapper
一、描述QDataWidgetMapper 可用于将模型数据映射到小部件。每次当前索引发生变化时,每个小部件都会通过映射时指定的属性使用来自模型的数据进行更新。 如果用户编辑小部件的内容,则会使用相同的属性读取更改并将其写回模型。默认情况下,每个小部件的用户属性用于在模型和小部件之间传输数据。可以设置项目委托以支持自定义小部件。 默认情况下,使用 QItemDelegate 将模型与小部件同步。例:以下代码将模型的列映射到小部件: QDataWidgetMapper *mappe原创 2021-08-21 11:06:26 · 2551 阅读 · 2 评论 -
Qt模型视图框架:QItemSelectionModel、QItemSelectionRange、QItemSelection
QItemSelectionModel一、描述QItemSelectionModel 跟踪视图中的选定项。QItemSelectionModel 采用两层方法进行选择管理,既处理已提交的选定项目,又处理作为当前选择一部分的项目。二、类型成员1、enum QItemSelectionModel::SelectionFlag:此枚举描述了选择模型的更新方式。NoUpdate:不会进行选择。 Clear:完整的选择将被清除。 Select:将选择所有指定的索引。 Deselect:所原创 2021-08-20 13:00:02 · 5591 阅读 · 0 评论 -
Qt模型视图框架:QSortFilterProxyModel
一、描述QSortFilterProxyModel 可用于对项目进行排序、过滤。该模型而无需对底层数据进行任何转换,也无需复制内存中的数据。要对自定义模型提供的项目进行排序和过滤。需要创建一个 QSortFilterProxyModel,以 MyItemModel 作为参数调用 setSourceModel(),并在视图上安装 QSortFilterProxyModel: QTreeView *treeView = new QTreeView; MyItemMod原创 2021-08-19 13:45:00 · 10516 阅读 · 1 评论 -
Qt模型视图框架:QStyledItemDelegate
一、描述当在 Qt 项目视图中显示来自模型的数据时,单个项目由委托绘制。此外,当一个项目被编辑时,它提供了一个编辑器小部件,小部件在编辑时放置在项目视图的顶部。 QStyledItemDelegate 是所有 Qt 项目视图的默认委托,并在创建它们时安装在它们上。模型中项目的数据被分配了一个 ItemDataRole。项目可以为每个角色存储一个 QVariant。 QStyledItemDelegate 实现了用户期望的最常见数据类型的显示和编辑,包括布尔值、整数和字符串。数据将根据它们在模型中原创 2021-08-17 22:03:45 · 6474 阅读 · 0 评论 -
Qt模型视图框架:QTreeWidgetItem、QTreeWidgetItemIterator
一、描述QTreeWidgetItem 类提供了一个与 QTreeWidget 类一起使用的项目。例: QTreeWidgetItem *cities = new QTreeWidgetItem(treeWidget); cities->setText(0, tr("Cities")); QTreeWidgetItem *osloItem = new QTreeWidgetItem(cities); osloItem->setText(0, tr(原创 2021-08-16 22:24:23 · 3839 阅读 · 0 评论 -
Qt模型视图框架:QTreeWidget
一、描述QTreeWidget 类是一个便利类,它提供了一个标准的树形小部件。在最简单的形式中,可以通过以下方式构建树小部件: QTreeWidget *treeWidget = new QTreeWidget(); treeWidget->setColumnCount(1); QList<QTreeWidgetItem *> items; for (int i = 0; i < 10; ++i) items.append(new QTreeWidget原创 2021-08-15 23:11:28 · 2044 阅读 · 0 评论 -
Qt模型视图框架:QTreeView
一、描述QTreeView 实现了模型中项目的树表示。构建一个树视图显示模型中的数据很简单。 在以下示例中,目录的内容由 QFileSystemModel 提供并显示为树: QFileSystemModel *model = new QFileSystemModel; model->setRootPath(QDir::currentPath()); QTreeView *tree = new QTreeView(splitter); tree->原创 2020-07-08 14:36:16 · 4136 阅读 · 0 评论 -
Qt模型视图框架:QTableWidget
一、描述标准表格小部件。QTableWidget 中的项目由 QTableWidgetItem 提供。使用方式: tableWidget = new QTableWidget(12, 3, this); tableWidget = new QTableWidget(this); tableWidget->setRowCount(10); tableWidget->setColumnCount(5);或: QTableWidge原创 2021-08-15 15:28:11 · 1304 阅读 · 0 评论 -
Qt模型视图框架:QTableView
一、描述QTableView 实现了表格视图,用于显示模型中的项目。二、属性成员1、cornerButtonEnabled : bool该属性保存左上角的按钮是否启用。默认为 true。如果此属性为 true,则启用表视图左上角的按钮。单击此按钮将选择表格视图中的所有单元格。2、gridStyle : Qt::PenStyle此属性保存绘制网格时使用的样式。3、showGrid : bool此属性保存是否显示网格。4、sortingEnabled : b.原创 2021-08-15 13:31:21 · 1004 阅读 · 0 评论 -
Qt模型视图框架:QStandardItem
重要成员函数1、QBrush background() /void setBackground(const QBrush &brush)背景画刷。2、Qt::CheckState checkState() /void setCheckState(Qt::CheckState state)设置按下。3、void clearData()从先前设置的所有角色中删除所有数据。4、QStandardItem * clone()返回此项目的副本。不复制项目的子项..原创 2021-08-14 20:52:30 · 5805 阅读 · 0 评论 -
Qt模型视图框架:QStandardItemModel、QStringListModel
QStandardItemModel一、描述QStandardItemModel 可用作标准 Qt 数据类型的存储库。QStandardItemModel 实现了 QAbstractItemModel 接口,这意味着该模型可用于在支持该接口的任何视图中提供数据。为了性能和灵活性,您可能希望继承 QAbstractItemModel 以提供对不同类型数据存储库的支持。当需要列表或树时,通常创建一个空的 QStandardItemModel 并使用 appendRow() 向模型添加项目,并使用原创 2021-08-14 19:05:46 · 1707 阅读 · 1 评论 -
Qt模型视图框架:QListWidgetItem
一、描述QListWidgetItem 代表 QListWidget 中的单个项目。每个项目可以包含多条信息,并将适当地显示它们。当继承 QListWidgetItem 以提供自定义项时,需要请确保在构造函数中使用等于或大于 UserType 的新类型值调用基类构造函数。二、类型成员1、enum QListWidgetItem::ItemType:此枚举描述用于描述列表小部件项的类型。Type:列表小部件项目的默认类型。 UserType:自定义类型的最小值。 低于 UserType原创 2021-08-14 17:10:45 · 5417 阅读 · 0 评论 -
Qt模型视图框架:QListWidget
一、描述QListWidget 是一个方便的类,它提供类似于 QListView 提供的列表视图,但具有用于添加和删除项目功能的界面。 QListWidget 使用内部模型来管理列表中的每个 QListWidgetItem。有两种方法可以将项目添加到列表中:可以使用列表小部件作为其父小部件来构建。 QListWidget *listWidget = new QListWidget(this); new QListWidgetItem(tr("Oak"), listWidge原创 2021-08-14 16:16:01 · 1722 阅读 · 0 评论 -
Qt模型视图框架:QListView
一、描述QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合。此视图不显示水平或垂直标题。 QStandardItemModel * model = new QStandardItemModel; for(int i = 0; i < 11; ++i) { QStandardItem *item = new QStandardItem(QString::number(i)); model->appendRow(i原创 2021-08-14 14:29:18 · 3000 阅读 · 0 评论 -
Qt模型视图框架:QItemEditorFactory、QItemDelegate
QItemEditorFactory一、描述在项目视图中编辑数据时,编辑器由委托创建和显示。 QStyledItemDelegate 是默认安装在 Qt 项目视图上的委托,它使用 QItemEditorFactory 为其创建编辑器。 所有项目委托都使用 QItemEditorFactory 提供的默认唯一实例。如果使用 setDefaultFactory() 设置新的默认工厂,则现有和新委托都将使用新工厂。工厂保存一组 QItemEditorCreatorBase 实例,这些实例是专门的编辑器原创 2021-08-12 23:07:03 · 1877 阅读 · 0 评论 -
Qt模型视图框架:QHeaderView
一、描述QHeaderView 显示项目视图(如QTableView、QTreeView)中使用的标题。标头使用 QAbstractItemModel::headerData() 函数从模型中获取每个部分的数据。可以使用 QAbstractItemModel::setHeaderData() 设置数据。对于水平标题,该部分相当于模型中的一列,对于垂直标题,该部分相当于模型中的一行。移动标题部分标题可以固定到位,也可以使用 setSectionsMovable() 移动。它可以通过 set原创 2021-08-11 23:47:44 · 13313 阅读 · 0 评论 -
Qt模型视图框架:QFileSystemModel
一、描述此类提供对本地文件系统的访问,提供重命名和删除文件和目录以及创建新目录的功能。在最简单的情况下,它可以与小部件一起使用,作为浏览器或过滤器的一部分。QFileSystemModel 可以使用 QAbstractItemModel 提供的标准接口进行访问,但它也提供了一些特定于目录模型的便利功能。注意:QFileSystemModel 需要一个 QApplication 的实例。默认用法 QFileSystemModel *model = new QFileSystemMo原创 2021-08-10 23:38:05 · 3562 阅读 · 0 评论 -
Qt模型视图框架:QColumnView
一、描述QColumnView 在多个 QListViews 中显示一个树型模型中的每个层次结构一个。这个视图的使用场景很有限,了解即可。二、示例 QStandardItemModel *model = new QStandardItemModel; QStandardItem * gz = new QStandardItem("广州"); gz->appendRow(new QStandardItem("天河区")); gz->appendRo原创 2021-08-10 13:02:28 · 2489 阅读 · 1 评论 -
Qt模型视图框架:QAbstractListModel、QAbstractTableModel
QAbstractListModelQAbstractListModel 为列表模型提供了标准接口,列表模型将其数据表示为简单的非分层项目序列。由于该模型提供了比 QAbstractItemModel 更特例化的接口,因此不适合与树视图一起使用。如果想为此目的提供模型,则需要将 QAbstractItemModel 子类化。如果需要使用多个列表模型来管理数据,那么将 QAbstractTableModel 子类化更合适。子类化1、在继承 QAbstractListModel 时,必须提供 r原创 2021-08-06 12:35:30 · 4145 阅读 · 0 评论 -
Qt模型视图框架:QAbstractItemDelegate
一、描述QAbstractItemDelegate 为模型/视图框架中的委托提供接口和通用功能。委托在视图中显示单个项目,并处理模型数据的编辑。要以自定义方式呈现项目,必须实现paint() 和sizeHint()。QStyledItemDelegate 类为这些函数提供了默认实现,如果不需要自定义渲染,请改为对 QStyledItemDelegate 类进行子类化。举一个在items中绘制进度条的例子;创建 WidgetDelegate 类,它继承自 QStyledItemDeleg.原创 2021-07-31 23:26:25 · 1420 阅读 · 0 评论 -
Qt模型视图框架:QAbstractItemView
一、描述QAbstractItemView 类是每个使用 QAbstractItemModel 的标准视图的基类。 QAbstractItemView 是一个抽象类,本身不能被实例化。 它提供了一个标准接口,用于通过信号和槽机制与模型进行互操作,使子类能够随着模型的变化保持最新。此类为键盘和鼠标导航、视口滚动、项目编辑和选择提供标准支持。键盘导航实现了这个功能:方向键更改当前项目并选择它。 Ctrl方向键更改当前项目但不选择它。 Shift+方向键键更改当前项目并选择它。 Ctr+Space原创 2021-07-31 22:41:22 · 4833 阅读 · 0 评论 -
Qt模型视图框架:QAbstractItemModel
一、概述QAbstractItemModel 类定义了项目模型必须使用的标准接口,以便能够与模型/视图框架中的其他组件进行互操作。 正确用法是将其子类化以创建新模型。此类用作 QML 中的项目视图元素或 Qt Widgets 模块中的项目视图类的底层数据模型。如果需要一个模型与项目视图一起使用,例如 QML 的列表视图元素或 C++ 小部件 QListView 或 QTableView,则应该考虑子类化 QAbstractListModel 或 QAbstractTableModel 而不是此类原创 2021-07-31 16:25:15 · 16045 阅读 · 2 评论 -
【翻译】Qt模型视图框架介绍(长文)
一、概述Qt 包含一组项目视图类,这些类使用模型/视图框架来管理数据之间的关系以及数据呈现给用户的方式。模型-视图-控制器 (MVC)设计模式,通常在构建用户界面时使用。MVC 由三种对象组成。Model 是应用程序对象 View 是 Model 的屏幕展示 Controller 定义了用户界面对用户输入的反应方式MVC 将用户界面设计解耦以增加灵活性和重用性。如果视图和控制器(V & C)对象组合在一起,结果就是模型/视图框架。结果是:这仍然将数据的存储方式与向用户.原创 2021-07-30 12:52:35 · 3825 阅读 · 4 评论 -
Qt模型视图框架:在视图中使用拖放
模型/视图框架完全支持 Qt 的拖放基本操作。列表、表格、树中的项目可以在视图内拖动,数据可以作为 MIME 编码数据导入和导出。标准视图自动支持内部拖放,在其中移动项目以更改它们的显示顺序。默认情况下,不为这些视图启用拖放,因为它们被配置为最简单、最常见的用途。要允许拖动项目,需要启用视图的某些属性,并且项目本身也必须允许拖动发生。1、使用便利类以QListWidget为例,以下代码行在列表小部件中启用拖放: QListWidget listWidget; listWid.原创 2021-07-29 23:03:18 · 1395 阅读 · 0 评论 -
Qt模型视图框架:自定义委托
这里实现一个委托使用 QSpinBox 来提供编辑功能,主要用于显示整数的模型。从 QStyledItemDelegate 子类化委托而不是 QAbstractItemDelegate,因为QStyledItemDelegate 已经实现了 paint() 函数。 class SpinBoxDelegate : public QStyledItemDelegate { Q_OBJECT public: SpinBoxDelegate(QObject *parent = .原创 2021-07-26 22:36:36 · 872 阅读 · 0 评论 -
Qt模型视图框架:自定义模型
来自官方文档,有改动。模型/视图组件之间的功能分离允许创建可以利用现有视图的模型。QAbstractItemModel 类提供了一个足够灵活的接口,以支持以分层结构排列信息的数据源,允许以某种方式插入、删除、修改或排序数据。它还提供对拖放操作的支持。QAbstractListModel 和 QAbstractTableModel 类为更简单的非分层数据结构的接口提供支持,并且更容易用作简单列表和表模型的起点。设计模型在为现有数据结构创建新模型时,重要的是要考虑应该使用哪种类型的模型来原创 2021-07-25 20:08:20 · 1311 阅读 · 0 评论