Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Qt模型视图体系结构的首选模式是什么?_C++_Qt_Architecture_Qt4 - Fatal编程技术网

C++ 使用Qt模型视图体系结构的首选模式是什么?

C++ 使用Qt模型视图体系结构的首选模式是什么?,c++,qt,architecture,qt4,C++,Qt,Architecture,Qt4,如何在Qt中使用MV?我尝试过以下两种方法: 如果存在现有的/遗留的 代码数据类,我使用模型 作为一个门面。这个 模型实现类得到一个 引用数据,并调用其 关于模型项访问的函数 电话 对于新的实现,我派生 QAbstractModel中的数据类 还有其他方法吗?Qt中的MV代码有点凌乱,难以实现。尤其是当您必须实现层次列表树视图时 根据您的需要,我发现在某些情况下使用QListWidget、QTableWidget和QTreeWidget便利类的痛苦要小得多。我最终采用的方法与您建议的方法类似。我

如何在Qt中使用MV?我尝试过以下两种方法:

如果存在现有的/遗留的 代码数据类,我使用模型 作为一个门面。这个 模型实现类得到一个 引用数据,并调用其 关于模型项访问的函数 电话

对于新的实现,我派生 QAbstractModel中的数据类


还有其他方法吗?

Qt中的MV代码有点凌乱,难以实现。尤其是当您必须实现层次列表树视图时


根据您的需要,我发现在某些情况下使用QListWidget、QTableWidget和QTreeWidget便利类的痛苦要小得多。

我最终采用的方法与您建议的方法类似。我目前正在使用facade将我的遗留数据模型映射到QAbstractModel

起初,facade有点太复杂了,但慢慢地,我将功能从facade模型中提取出来,并将其推送到我的数据模型中。然后有一天我会完全移除正面,这样我的模型就是模型


使用单一型号会使我的头部受到的伤害更小。

-1对不起,我不是在要求其他型号,而是在Qt中使用MV的最佳实践。事实上,我不觉得它们凌乱。相反各种型号的树,表。列出适合我的工作清单。很抱歉,这些旧的便利类在非普通应用程序中不可用。FWIW,这与我的做法类似。1如果存在使用*小部件类的现有代码,请不要使用它,除非它在功能上需要大修。2如果存在现有/遗留代码数据类,请将模型用作外观。3如果我需要一个新的实现,有多少与数据内在相关?如果数量足够大,我将创建一个数据类,并将模型用作外观,这样方法通常与UI细节分离。4.其他来源于QAbstractModel。