2012-06-21 30 views
1

由於某些原因,對話框不會在我的程序中關閉,即使通過標準dialog.run()調用顯示。他們顯示並返回代碼,但按鈕不會關閉它們。以下是發生這種情況的一些代碼:Vala中的對話不會關閉

//Inside constructor for my window class 
load_dlg = new FileChooserDialog("Select file to open...", this, 
FileChooserAction.OPEN, 
Gtk.Stock.CANCEL, ResponseType.CANCEL, 
Gtk.Stock.OPEN, ResponseType.ACCEPT, null); 
//... 
//Inside an event handler method 
if(load_dlg.run() == Gtk.ResponseType.ACCEPT){ 
    image_backend = new Pixbuf.from_file(load_dlg.get_filename()); // This works, and it's in a try clause. 

而且一切都很好,只是在返回代碼後對話不會關閉。與AboutDialog相同。不過,在Python中一切正常。

回答

3

您可以在load_dlg.run()已返回之後load_dlg.hide()

+0

是的,它的工作。然而,我對這種行爲感到困惑,因爲在其他大多數情況下,dialog.run()都返回了代碼_and_關閉了對話窗口(Python,C++,C ...)。 – FLamparski

+2

不在C:'gtk_dialog_run()'返回後,如果你想這樣做,你有責任隱藏或銷燬對話框。 - [GtkDialog](http://developer.gnome.org/gtk/2.24/GtkDialog.html#gtk-dialog-run) – apmasell

+0

真的嗎?我確信'gtk_dialog_run()'處理隱藏C中的對話框。但它實際上解釋了事情,因爲Vala坐在C的頂部。謝謝! – FLamparski