2011-12-06 34 views
0

なぜGtkの原因になる可能性がありますか::ウィンドウを閉じることができません?Gtk :: Window *を閉じることができません。なぜですか?

私はいくつかのミスファインションウィンドウを持っていますが、作成がまだ開いているダイアログでは閉じられません。そのウィンドウを開いたダイアログが閉じられると、それらは正常に閉じることができます。

別のバージョンのアプリケーションでは、私は同じ方法でウィンドウを作成していましたが、メインウィンドウからは閉じることができました。

メインウィンドウがメインに作成され、ダイアログボックスはgtk :: windowを拡張したクラスで作成され、最後にダイアログからクローズできない2つのウィンドウが作成されます。

main.cppに

#include "MainWindow.h" 
#include <gtkmm/main.h> 
#include <iostream> 

int main(int argc, char *argv[]) { 

    Gnome::Gda::init(); 
    Gtk::Main kit(argc, argv); 

    Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create_from_file("MainWindow.glade"); 

    MainWindow *window; 

    refBuilder->get_widget_derived("window1", window); 
    Gtk::Main::run(*window); 

    return 0; 
} 

MainWindow.cpp - >クラスのメインウィンドウ:公共のGtk ::ウィンドウ

#include "MainWindow.h" 
#include <libgdamm.h> 
#include <gtkmm.h> 
#include <iostream> 
#include <fstream> 
#include <memory> 

#include "DBUtil.h" 
#include "FormDialog.h" 

MainWindow::MainWindow(BaseObjectType* cobject, Glib::RefPtr<Gtk::Builder> refBuilder) : 
Gtk::Window(cobject), 
m_refBuilder(refBuilder) { 
//stuff 
} 
//more stuff 
    void MainWindow::on_button_new() { 
    FormDialog *dialog; 

    Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create_from_file("FormDialog.glade"); 

    refBuilder->get_widget_derived("dialog1", dialog); 
    dialog->setConnectionData(cnc, parser); 
    dialog->run(); 

    delete dialog; 

} 
//even more stuff 

FormDialog.cpp - >クラスFormDialog:公共のGtk ::ダイアログ

#include "FormDialog.h"

#include <gtkmm.h> 
#include <iostream> 
#include <cstdlib> 
#include <cstring> 
#include "DBUtil.h" 

FormDialog::FormDialog(BaseObjectType* cobject, Glib::RefPtr<Gtk::Builder> refBuilder) : 
Gtk::Dialog(cobject), 
m_refBuilder(refBuilder) { 
//stuff 
} 
//more stuff 

int FormDialog::check_file(const char * path){ 
    if (strstr(path, ".jpg")!=NULL || strstr(path, ".jpeg")!=NULL) 
    { return 1; } 
    else { 

Glib::ustring* us = new Glib::ustring("\n Help \n"); 

Gtk::Window* help_win = new Gtk::Window(Gtk::WINDOW_TOPLEVEL); 
help_win->set_title ("Help"); 
help_win->move(15,55); 
Gtk::Label* lab = new Gtk::Label(*us,false); 

    help_win->add(*lab); 
    help_win->show_all(); 
    return 0; } 
} 
//More stuff 
void FormDialog::on_button_sel() { 
//function stuff 
if (check_file(dialog.get_filename().c_str())) { 
//more function stuff 

} 

ヒント/手掛かり/修正はありがたいです!私はコードが必要な場合に投稿することができます。 Thx in advance

+0

ダイアログがモーダルおよび/またはトランジェントに設定されていますか?子ウィンドウがブロックされている場合、ウィンドウはクリックを受け入れることができません。 – senshikaze

答えて

0

ダイアログが一時的にメインウィンドウに設定されていて、property_modalがtrueの場合、 "FormDialog.glade"をチェックすると、ダイアログが最初に終了するまでメインウィンドウを閉じることができません。

関連する問題