我正在使用 C 语言开发 Glade3 界面。
到目前为止,我有两个地方可供用户选择保存文件的位置。我有一个 GtkFileChooserDialog,当您单击浏览按钮时会打开。当您单击该对话框上的保存时,它会填充“浏览”按钮旁边的 GtkEntry。
它在您第一次选择文件时起作用,但第二次gtk_file_chooser_get_filename()
,即使您在对话框中输入了某些内容,它也不返回任何内容。
这是源代码的简化版本,仍然存在问题:http ://paste.ubuntu.com/1032567/和与之配套的 Glade3 接口文件:http: //paste.ubuntu.com/1032572/
我的 UI 中有两个地方有这样的设置。发生在他们俩身上。我有两个不同的回调函数——一个是旧的尝试,另一个是我最近的尝试。两者都不起作用,尽管较新的版本避免了段错误,因为它会检查返回的内容是否为空。
较新的回调是on_button5_clicked()
和较旧的on_button3_clicked
.
我查看了参考资料,但我没有看到任何关于为什么它会返回空指针,即使您选择了文件名。
任何帮助将不胜感激。(我觉得我正处于头撞阶段)。
编辑:所以,我有更多的想法可以尝试。首先,我尝试使用 FileChooser 小部件制作自己的窗口,而不是使用对话框。我这样做是为了确保对话框在没有通过 gtk_Dialog_Run 调用运行时没有问题。我还尝试重复获取并检查指向文件名字符串的指针是否不为空的代码。当它在同一个回调调用中第二次运行时,它返回一个非空字符串指针。我也这样做是为了确保它与启动对话框的窗口(实际上是 gtk_widget_show()ED)本身就是一个对话框这一事实无关。
我尝试了我的理论,即我必须将对话框中的按钮设置为具有 gtk.RESPONSE_OK 或 gtk_RESPONSE_CANCEL 响应。那似乎没有任何效果。