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