Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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++ 如何为系统驱动器、文件夹和文件创建浏览器_C++_Qt_Qt5_Qtgui_File Browser - Fatal编程技术网

C++ 如何为系统驱动器、文件夹和文件创建浏览器

C++ 如何为系统驱动器、文件夹和文件创建浏览器,c++,qt,qt5,qtgui,file-browser,C++,Qt,Qt5,Qtgui,File Browser,我想创建如下内容: 不幸的是,Qt不支持就绪小部件 是否有插件或任何方法可以做到这一点?在网络上使用。如果您查看这两个链接中的第一个,它实际上包含了与此完全相同的示例代码。个人建议,如果可以避免的话,不要使用QWidgets来完成此任务。相反,尝试使用新的闪亮的QML方法来构建QtUI。这可能只是我个人的观点,但在我看来,QTreeView有几个缺陷 QML 在这里,您可以找到最近如何使用QML的一个示例。它使用的是fromQt.labs.folderlistmodel 2.1 FolderL

我想创建如下内容:

不幸的是,Qt不支持就绪小部件

是否有插件或任何方法可以做到这一点?

在网络上使用。如果您查看这两个链接中的第一个,它实际上包含了与此完全相同的示例代码。

个人建议,如果可以避免的话,不要使用QWidgets来完成此任务。相反,尝试使用新的闪亮的QML方法来构建QtUI。这可能只是我个人的观点,但在我看来,
QTreeView
有几个缺陷

QML 在这里,您可以找到最近如何使用QML的一个示例。它使用的是from
Qt.labs.folderlistmodel 2.1

FolderListModel提供对本地文件系统中文件夹内容相关信息的访问,将文件列表公开给视图和其他数据组件

注意:通过导入Qt.labs.folderlistmodel模块可以使用此类型。Qt.labs模块中的元素不保证在未来版本中保持兼容

导入Qt.labs.folderlistmodel 2.1

folder属性指定要访问的文件夹。有关文件夹中文件和目录的信息通过模型的界面提供

C++与QWidgets

如果你坚持在C++中使用旧的代码> QWIDGET< /COD>集合,那么你的选择可能是因为它毕竟是树视图,然后将它与.< /P>结合使用。 代码如下所示:

QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());
QTreeView *tree = new QTreeView(splitter);
tree->setModel(model);
tree->setRootIndex(model->index(QDir::currentPath()));

对Stackoverflow来说太宽了。@CaptainObvlious:不,不太宽。它有一个非常具体的答案。仅仅因为你不知道答案或认为它是一个广泛的主题,这意味着这是真正的情况!在Qt的情况下,创建两个类的实例并将它们连接起来就很简单了。完成。我绝对讨厌,如果人们投票否决完美的答案,投票赞成结束,仅仅因为他们自己对主题一无所知+1,但是为什么您现在不使用QML而不是小部件呢?这有一个现成的元素!我还认为你在这里接受答案太快了。通常,有比“阅读此链接”更好的答案。至少,我希望我们的目标是:我去掉了司机的标签。我不知道为什么要添加它。现在不需要用QML做每个UI。谢谢你的详细回答。和
+1
作为您的答案。@dom0:这实际上与QML无关。这是关于QWIDGET已经被认为是“完成”和技术上非常有限的,因为你不会找到合适的C++ API的SG…所以是的,这不是关于QML,但新技术毕竟是由QML带给我们的。一旦我们得到了SG的合适的C++ API(我等待了多长时间……),我也能够发布一个基于非QWIDGET的C++解决方案。一个典型的例子是,它在移动平台上看起来很难看。»这是关于QWidget被认为“完成了”并且技术非常有限。«嗯,不,对不起,QWidget得到了积极的开发和支持。这是一项很好的技术,只是不适合移动和嵌入式平台(以及某些桌面应用程序)。它们都是(基于QWidget/QPainter的UI和基于QML/QSG的用户界面)。@dom0:它没有得到任何严重的积极开发,没有。如果有,它基本上处于维护模式。话虽如此,我的一个内存泄漏补丁也被卡住了,所以。。。积极的开发意味着从头开始重新设计它,而这正是QML堆栈所要做的,一个真正的跨平台(硬件加速的!)UI堆栈,在我看来,它是唯一添加到boost中的Qt,等等。希望以后还会有SG的C++ API,但现在是QML。无论如何,让我们停止燃烧吧,我的回答也为顽固的老脑袋提供了解决办法。:-)