gpt4 book ai didi

qt - 如何使用 QAbstractTableModel.submit\revert 方法?

转载 作者:行者123 更新时间:2023-12-04 00:34:48 26 4
gpt4 key购买 nike

我正在尝试使用我自己的 QAbstractTableModel-后代类和 QTableView 进行基于记录的网格内编辑。编辑完成后,模型会收到一个信号到它的 submit()revert() 插槽。但是没有参数,所以模型不知道它需要将哪条记录提交到(刷新)数据存储。我试图通过捕获 model.setData()/removeRows()/insertRows() 来设置我自己的更改跟踪,但这有点乱。有正确的方法吗?

最佳答案

根据 QAbstractTableModel 上的文档:

Subclassing

When subclassing QAbstractTableModel, you must implement rowCount(), columnCount(), and data(). Default implementations of the index() and parent() functions are provided by QAbstractTableModel. Well behaved models will also implement headerData().

Editable models need to implement setData(), and implement flags() to return a value containing Qt.ItemIsEditable.

因此,您重新实现 setDataremoveRowsinsertRows 是合适的。该类的其他子类也使用它们自己的内部缓存来跟踪正在更改的内容,以便它可以在需要时将其提交到数据源。如果到目前为止你的方法一团糟,那么你可能只需要改进你正在做的事情,因为路径是正确的。

setData 是您可以跟踪内部数据结构中正在更改的内容的地方。因此,例如,如果您的模型在内部是一个基本字典,并且将提交给基于 Web 的 REST 服务,您将管理对内部字典中数据的更改。当 submit 被调用时,您将使用该内部缓存进行必要的 REST 调用以发送数据并同步它。

关于qt - 如何使用 QAbstractTableModel.submit\revert 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750958/

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