Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
如何使用Qt实现类似visualstudio解决方案资源管理器的树视图?_Qt_Model View_Solution Explorer - Fatal编程技术网

如何使用Qt实现类似visualstudio解决方案资源管理器的树视图?

如何使用Qt实现类似visualstudio解决方案资源管理器的树视图?,qt,model-view,solution-explorer,Qt,Model View,Solution Explorer,我想用Qt实现一个类似visualstudio解决方案浏览器的树视图。该树用于表示称为“项目”的外部数据。我想使用Qt模型/视图体系结构 (1) QTreeView用于视图,该模型是从qabstractemmodel派生的,其中包含一个指向项目对象的指针。 (2) 目录下的项目按其名称排序。在目录下添加项目时,它将自动放在正确的位置。 (3) 双击树中的项目时,将弹出一个对话框进行编辑 实现(2)和(3)的任何好方法。非常感谢 ad2)看看这里可能会有所帮助:。它包含实现更复杂的项目排序和筛选的

我想用Qt实现一个类似visualstudio解决方案浏览器的树视图。该树用于表示称为“项目”的外部数据。我想使用Qt模型/视图体系结构

(1) QTreeView用于视图,该模型是从qabstractemmodel派生的,其中包含一个指向项目对象的指针。 (2) 目录下的项目按其名称排序。在目录下添加项目时,它将自动放在正确的位置。 (3) 双击树中的项目时,将弹出一个对话框进行编辑

实现(2)和(3)的任何好方法。非常感谢

ad2)看看这里可能会有所帮助:。它包含实现更复杂的项目排序和筛选的示例

Ad 3)覆盖QTreeView::mouseDoubleClickEvent()


另一种选择是,您可以使用QTreeWidget和QTreeWidgetItem,在这种情况下,您可能希望遍历树并直接在所需位置插入子项。

谢谢您的建议。我想知道使用QTreeWidget的好处。我还需要使用数据小部件映射器。是否可以使用QTreeWidget使用它?对于目录项,双击时,我希望看到目录下所有项的表视图。我是否需要从原始模型为表格视图制作模型?有什么好的建议来实施它吗?再次非常感谢!如果您不想关心底层数据,QTreeWidget将为您提供一些额外的项目灵活性。一般来说,您可能更愿意在大多数时间坚持使用模型/视图。如果您要进行大量的重新排列、更改父对象,并且找不到良好的底层结构,那么直接使用QTreeWidget可能会更容易。在这种情况下,请务必查看基本的实施指南。至于可重用性-您可以使用相同的模型并使用不同的根对其进行初始化-例如,QDir的完整路径。