QT学习-----模型视图委托

模型类

  基本的模型:列表模型,表格模型,树模型

  使用数据的访问,增加,删除等操作都是通过索引去实现的;可以设置和获取数据单元的角色role

视图类

  基本的视图:QListView、QTableView、QTreeView

  处理选择的项目:QItemSelectionModel

委托类

  QAbstractItemDelegate、QItemDelegate

  委托编辑:使用部件来管理编辑过程;直接处理时间

  提供输入功能以及渲染视图中的个别项。

  创建编辑器:createEditor(....);

  为编辑器设置数据:setEditorData(....);

  将数据写入模型:setModelData(....);

便捷类

  QListWidget、 QTreeWidget、QTableWidget

MVD 模型支持拖放

数据窗口的映射器:QDataWidgetMapper

QSqlTableModel这两个数据库模型默认加载数据的时候不是加载所有的数据,而是只加载256条数据(前提是数据源有大于256的数据,如果没有的则有多少条就加载多少条数据)。

实现方法其实很简单,就是结合使用模型的canFetchMore() 和 fetchMore()接口。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的QT视图模型委托项目案例: 假设有一个表格,其中一列显示了用户的年龄,我们想要让年龄小于18岁的行以红色显示,而年龄大于等于18岁的行以绿色显示。我们可以通过使用QT视图模型委托来实现此目的。 首先,我们需要定义一个自定义的委托类,该类继承自QStyledItemDelegate类。在该类中,我们将实现一个paint()函数,该函数将会在每次需要绘制表格项时被调用。 ```cpp class AgeDelegate : public QStyledItemDelegate { public: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override { // 获取年龄值 int age = index.data(Qt::DisplayRole).toInt(); // 设置画笔颜色 if (age < 18) { painter->setPen(QColor("red")); } else { painter->setPen(QColor("green")); } // 调用基类的paint()函数进行绘制 QStyledItemDelegate::paint(painter, option, index); } }; ``` 接下来,我们需要在主窗口中创建一个表格,并为其设置一个QStandardItemModel模型。然后,我们将会为该模型的第二列(即年龄列)设置我们刚刚定义的委托类。 ```cpp // 创建表格和模型 QTableView *tableView = new QTableView(this); QStandardItemModel *model = new QStandardItemModel(4, 2, this); // 设置表头 model->setHeaderData(0, Qt::Horizontal, tr("Name")); model->setHeaderData(1, Qt::Horizontal, tr("Age")); // 设置模型数据 model->setData(model->index(0, 0), "John Doe"); model->setData(model->index(0, 1), 25); model->setData(model->index(1, 0), "Jane Smith"); model->setData(model->index(1, 1), 17); model->setData(model->index(2, 0), "Bob Johnson"); model->setData(model->index(2, 1), 30); model->setData(model->index(3, 0), "Mary Williams"); model->setData(model->index(3, 1), 16); // 为模型的第二列设置委托 tableView->setItemDelegateForColumn(1, new AgeDelegate(this)); // 将模型设置给表格 tableView->setModel(model); ``` 现在,我们运行程序,就可以看到表格中年龄小于18岁的行以红色显示,而年龄大于等于18岁的行以绿色显示。这就是通过QT视图模型委托实现的。 注意:本示例并不完整,只是为了演示视图模型委托的基本用法。在实际应用中,您可能需要对上述代码进行进一步的修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值