问:如何跨表格呈现和编辑数据

时间:2011-04-26 11:20:29

标签: sql qt view model

请耐心等待,因为这是一个有点主观的问题,但我知道可能是常见情况的最佳实践。

我将数据拆分为多个(sqlite)表,我使用Qt进行操作。 (sql)视图是显示来自多个表的数据的一种方法,但我希望能够更新值。 让我们用三个例子来说,使用说房子。 这三个表通过外键链接,比如Area表,House表和Furniture表。与外键有1:很多关系:区域:房子,房子:家具 我希望有一个带有区域的UI项目填充House UI项目,该UI项目又填充Furniture UI项目。通过UI项目,我的意思是类似于可编辑列表,或者一系列lineEdits / Spinners(取决于值类型),真的是什么。

只是澄清一点,我理解如何使用qsqlrelationaltablemodel和qsqlrelationdelegate。当我更新单个表时,这些工作正常,但不会更新从多个表上的连接创建的(sql)视图。 我正在寻找一个解决方案,让我有效地处理来自多个表的数据,包括更新值。

我是否应该使用三个模型执行此操作,更新每个模型的过滤器,并使用链接到每个模型的视图? 或许我可以将所有内容插入到单个树模型中? 或者我应该考虑创建一个自定义模型,或者可能只是不使用模型/视图和手动填充UI?

我曾尝试在同一个数据库中使用多个模型作为前一个实验,并且它们没有像我希望的那样表现得很好。这是我询问最佳实践的主要原因。

非常感谢您提出的任何建议。

1 个答案:

答案 0 :(得分:0)

我想我的问题并不是那么清楚;因为我真的不知道要问的正确问题。 我正在寻找一种方法来表示来自多个表的数据,而不是通过单独的UI项目,这种方式不一定直接映射到tableview。

到目前为止,我的解决方案是使用单独的模型,手动填充数据库。编辑我手动执行所需的值。

到目前为止似乎工作正常。 我提到的一个方便的提示是将额外的数据放在另一个角色Qt :: UserRole中。这是我可以在单列树视图中存储相关的UUIDS(我的数据库密钥都是UUID),并使用这些来获得相当直接的数据库访问。额外的数据显然可以放在Qt :: UserRole + n中,虽然我还没有尝试过。