我想知道是否有人能够帮助我在Ubuntu中使用C++实现一个简单的文件打开对话框。我正在使用OpenGL作为我的GUI,但我希望用户在程序加载时能够选择文件。我尝试过gtkmm和wxWidgets,但它们似乎对我想要做的事情来说太复杂了。
如果你只需要选择一个文件,那么启动一个单独的程序来完成这个任务。就像评论中@Dummy00001所说的那样,您可以启动zenity --file-selection
作为子进程并读取其标准输出。
char filename[1024];
FILE *f = popen("zenity --file-selection", "r");
fgets(filename, 1024, f);
或者您也可以自己编写程序来完成任务。这样,您可以根据自己的需要定制用户界面。
这个项目可以帮助你: https://github.com/samhocevar/portable-file-dialogs
它使用了与这些答案中描述的相同的思路,但是它是架构无关的,对于Unix系统,它包装了zenity、kdialog等...
这里有更完整的带有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
zenity --file-selection
上使用popen()
- Dummy00001