gpt4 book ai didi

qt - 在 Qt 中,创建一个带有空白可编辑行的表格

转载 作者:行者123 更新时间:2023-12-04 13:26:20 24 4
gpt4 key购买 nike

这是一个特定于 Qt 的问题。

通过在表格底部的空白行中键入内容,可以很方便地向表格中添加新数据。提交数据后,表中会添加一个新的空白行。

有没有人找到一种以通用方式实现这一点的方法,它适合 Qt 的模型 View 编程架构?我最近的尝试涉及创建一个代理模型,例如 rowCount()从模型返回的值总是比源模型大 1。

QAbstractTableModel* sourceModel ; // Data is stored here
QBlankRowModel* model ; // Proxy model that adds one to rowCount()
QTableView* view ; // View
view->setModel( model ) ;
model->setSourceModel( sourceModel ) ;

欢迎任何建议。谢谢。

最佳答案

从设计的角度来看,这应该是 View 的一部分,而不是模型的一部分。因此,我建议实现具有功能的 View 并保持模型不变。 KOffice Kexi 就是用 kexitableview ( screenshot , documentation ) 做到这一点。也许你想使用他们的一些代码。

顺便说一句,您仍然可以使用您的 hack 并将其与我的建议结合起来,将其放入新的表 View 实现 YourTableView 中:

  • QBlankRowModel 重新实现
    QAbstractTableModel
    界面。它返回 sourceModel.rowCount()+1 作为 QBlankRowModel::rowCount()
    如果在 QVariant() 中请求第 n+1 行,则返回 QBlankRowModel::data()QBlankRowModel 内的所有其余部分都转发到 sourceModel(带有编辑n+1 中的第 QBlankRowModel 行被缓冲并替换为插入到sourceModel 完成时)。
  • 新的 YourTableView 继承自QTableView 并将 sourceModel 包裹在里面
    YourTableView::setModel() ,调用QTableView::setModel(QBlankRowModel(sourceModel))

  • 因此,您的 hack 是在某一点本地化的。

    关于qt - 在 Qt 中,创建一个带有空白可编辑行的表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628126/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com