我正在使用 QFileSystemModel 来填充我的 TreeView 。用户可以右键单击树节点(文件夹)并执行操作(导出该文件夹下的所有特定数据文件)。
我在 on_tree_clicked() 下有这个导出,但我觉得这个操作属于模型。
如果我从 QFileSystemModel
派生自己的 QFileSystemModelWithExport
并添加导出功能,会不会更好?从 on_tree_clicked(),然后我就调用它?
还有其他方法可以很好地做到这一点吗?我希望我的 on_tree_clicked()
更短更清晰。
此外,我对 Qt 还很陌生,我们如何从 Qt 核心类派生 QFileSystemModel
?当我添加类时,它允许我派生自 QObject、QWidget 等,但不能派生自任何模型类。
最佳答案
您的用户界面应该只处理用户界面问题。即按钮按下、用户交互。
然后这应该将它发送到实际执行代码的模型。
这样想,如果您导出到文件需要 5 秒,那么这 5 秒您不能使用您的 UI,因为该线程正在写入文件。如果您拥有此模型,您就有机会对特定事件进行多线程处理,并在执行操作时保持 UI 响应。
代码明智:
onTreeClicked()
可以很短。它可以执行以下操作:
myModel->writeDataFromNodeToFile();
& 然后在该函数中,您可以拥有写入文件所需的所有功能。打开/关闭/流数据等
关于c++ - 这应该在模型中还是在 View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28348611/