我想知道是否有人可以帮助我在Ubuntu中用C ++实现一个简单的文件打开对话框。我正在使用OpenGL作为我的GUI,但我希望用户能够在程序加载时选择一个文件。我试过gtkmm和wxWidgets,但它们似乎太复杂了我想做的事。
答案 0 :(得分:3)
如果您只需要选择一个文件,那么启动一个单独的程序来执行该操作。就像@ Dummy00001在评论中说的那样,你可以将zenity --file-selection
作为子进程启动并阅读它的标准输出。
char filename[1024];
FILE *f = popen("zenity --file-selection", "r");
fgets(filename, 1024, f);
或者您也可以编写自己的程序来完成任务。这样您就可以根据需要自定义UI。
答案 1 :(得分:0)
为此我写了osdialog。有关使用GTK + 2的示例,请参见osdialog_gtk2.c
。
答案 2 :(得分: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
答案 3 :(得分:0)
这个项目可以帮助你: https://github.com/samhocevar/portable-file-dialogs
它使用了这些答案中描述的相同想法,但它与架构无关,并且对于 Unix,它包装了 zenity、kdialog ...