8

我想知道是否有人可以帮助我在 Ubuntu 中用 C++ 实现一个简单的文件打开对话框。我正在为我的 GUI 使用 OpenGL,但我希望用户能够在程序加载时选择一个文件。我已经尝试过 gtkmm 和 wxWidgets,但对于我想做的事情来说,它们似乎太复杂了。

4

4 回答 4

7

如果您只需要选择一个文件,请启动一个单独的程序来执行此操作。就像@Dummy00001 在评论中所说,您可以从zenity --file-selection子进程开始并阅读其标准输出。

char filename[1024];
FILE *f = popen("zenity --file-selection", "r");
fgets(filename, 1024, f);

或者您也可以编写自己的程序来完成任务。这样您就可以根据需要自定义 UI。

于 2015-05-25T05:52:53.850 回答
1

这个项目可以帮助你: https ://github.com/samhocevar/portable-file-dialogs

它使用这些答案中描述的相同想法,但它与架构无关,对于 Unix,它包含 zenity、kdialog ...

于 2021-07-30T22:30:50.640 回答
1

为此,我编写了osdialog。请参阅osdialog_gtk2.c使用 GTK+ 2 的示例。

于 2019-05-09T20:12:53.157 回答
0

在这里,您有更完整的 zenity 代码:

const char zenityP[] = "/usr/bin/zenity";
char Call[2048];

sprintf(Call,"%s  --file-selection --modal --title=\"%s\" ", zenityP, "Select file");

FILE *f = popen(Call,"r");
fgets(Bufor, size, f); 

int ret=pclose(f);
if(ret<0) perror("file_name_dialog()");

return ret==0;//return true if all is OK
于 2020-05-13T10:04:27.947 回答