这应该是模型还是视图?

时间:2015-02-05 16:05:32

标签: c++ qt design-patterns model-view-controller

我正在使用QFileSystemModel来填充我的树视图。用户可以右键单击树节点(文件夹)并执行操作(导出该文件夹下的所有特定数据文件)。

我在on_tree_clicked()下有这个导出,但我觉得这个操作属于模型。

如果从QFileSystemModelWithExport派生自己的QFileSystemModel并添加导出功能,会更好吗?从on_tree_clicked()开始,我只是调用它?

还有其他方法可以很好地完成这项工作吗?我希望我的on_tree_clicked()更短更清洁。

我也是Qt的新手,我们如何从QFileSystemModel这样的Qt核心类派生出来?当我添加类时,它允许我从QObject,QWidget等派生而不是从任何模型类派生。

1 个答案:

答案 0 :(得分:2)

您的UI应该只处理UI问题。按钮按下,用户交互。

然后应该将它发送到实际执行代码的模型。

按照这种方式考虑,如果您导出到文件需要,比如5秒,那就是5秒,您无法使用您的UI,因为该线程正在执行写入文件。如果你有这个模型,你有机会多线程特定事件,并在执行操作时保持你的UI响应。

代码明智:

onTreeClicked()可能相当短。它可以执行以下操作:

myModel->writeDataFromNodeToFile();

&安培;然后在该函数内部,您可以拥有写入文件所需的所有功能。打开/关闭/流数据等