如何使用目录中的所有文件夹在C ++中填充列表框

时间:2011-12-02 05:29:41

标签: c++ listbox openfiledialog

我想知道如何列出列表框中目录中的所有文件夹。我使用的是Visual C ++。

2 个答案:

答案 0 :(得分:4)

C ++是一种不指定用于实现图形界面的任何标准类或函数的语言。它也没有提供从操作系统获取文件和目录列表的标准方法!实际上......很长一段时间里,字符串类都没有标准,每个项目都选择了不同的不兼容字符串。

注意:即使现在有一个标准的string课程,分段的遗产仍在继续:Why is there a different string class in every C++ platform out there?

因此,当您标记“C ++”或使用该术语时,它仅指语言引擎本身。虽然听起来有限,但其中一个优势是这个引擎非常强大,你不需要来构建内容以使它们高效或具有深度编码接口。该语言的用户几乎可以创建很酷的语言功能,就像他们能够修改编译器本身一样。

但是,对于初学者来说,这是一个陡峭的山坡。


所有这些都意味着像“如何使用目录中的所有文件夹在C ++中填充列表框?”这样的问题是非常开放的。这取决于您选择用于GUI的工具包,以及与文件系统进行通信的工具包。一些工具包是“大”的,并提供涵盖这两个领域的综合课程:

http://doc.qt.nokia.com/latest/qdir.html#navigation-and-directory-operations

http://doc.qt.nokia.com/latest/itemviews-dirview.html

其他库更窄,只提供一种或另一种功能。例如,“boost”是一组几乎标准库,尚未将其纳入C ++规范。有一种方法可以使用boost::filesystem使用C ++枚举文件和目录。不过,对于初学者来说这是令人生畏的:

http://www.boost.org/doc/libs/1_48_0/libs/filesystem/v3/doc/tutorial.html

如果您愿意将自己链接到特定的操作系统或实现 - 例如调用仅在Windows上可用的函数,或仅在Linux下使用GTK,或仅在MacOS上 - 那么您可以访问该平台+工具包提供。但是因为C ++是独立于平台的,所以一旦你越过那条线就不再用“只是C ++”进行编程了,而你在StackOverflow上的问题和标签需要澄清你做出的选择。

关于SO的其他问题是关于Visual Studio和VB的,所以我假设你正在使用Windows。


您应该注意的一个相关主题是“常见对话框”。这些是提供的便利,这样每个人都不必编写自己的“文件 - >打开”逻辑,颜色选择器或搜索对话框。 Microsoft在Windows上定义了一些:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646960(v=VS.85).aspx

因此,如果选择文件,文件,目录或目录是某些代码的简单目的......那些可以省去麻烦。 Qt有类似的东西:

http://doc.qt.nokia.com/stable/qfiledialog.html#details


您可以修改问题以添加有关您的目的的更多信息。如果你对C ++很好奇,只想深入了解并拥有一套可在Windows,Mac或Linux上运行的详细记录的功能......请考虑尝试使用Qt Creator:

http://www.qt.io/ide/

微软已经完全取决于他们在.NET和C#上的策略,所以至少现在你作为一名C ++ GUI程序员,如果你选择Qt,你将会站稳脚跟。

答案 1 :(得分:3)

还有另一种免费开源,名为Nana C ++ Library(http://stdex.sourceforge.net),一个纯C ++ GUI库。

There is a tutorial to populate a treebox with folders.

图书馆的状态是有效的,每月更新一次。这是一个新的图书馆,它将是您的爱好项目的一个选择。