LINUX.ORG.RU

gtkmm 3.0 показать два окна

 ,


1

1

Нигде не могу найти простой пример для gtkmm, где стартуют сразу два и больше окон. Может подскажете?

Одно окно показываю так:

#include <gtkmm.h>


int main( int argc, char *argv[] )
{
	auto app = Gtk::Application::create();
	Gtk::Window win;
	
	app->run( win );
}

Почитал про Gtk::Application, но ничего путнего не нашел.



Последнее исправление: matrasa (всего исправлений: 1)

А так?

#include <gtkmm.h>


int main( int argc, char *argv[] )
{
	auto app = Gtk::Application::create();
	Gtk::Window win1;
	Gtk::Window win2;
	win1.show();
	win2.show();
	app->run();
}

hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

Окна появляются, и закрываются. Но если передать в run() одно окно, тогда окна остаются на месте, и их два.

Одна проблема, закрытие окна, которое передано в run(), приводит к завершению приложения. А мне надо бы, чтобы приложение ждало закрытия всех окон.

matrasa
() автор топика
Ответ на: комментарий от matrasa

Такой код позволяет закрывать окна в любом порядке. Но после закрытия последнего, приложение остается запущенным.

#include <gtkmm.h>


int main( int argc, char *argv[] )
{
	Gtk::Main kit( argc, argv );
	
	Gtk::Window win1;
	Gtk::Window win2;
	
	win1.show();
	win2.show();
	
	Gtk::Main::run();
}
matrasa
() автор топика

Раз остальные окна ведомые, то и создавать их можно в событии типа on-create основного окна.

gag ★★★★★
()
Ответ на: комментарий от gag

А если все равноправные, то необходимо в обработчике on-delete каждого окна проверять, живо ли хоть ещё одно другое окно, если нет - закрывать приложение (quit main loop).

gag ★★★★★
()
Ответ на: комментарий от gag

Ок, спасибо сделаю так. Но скорее оставлю так как получилось сейчас. Я планировал как скрипт на перл + приложение на крестах, которое запускается раз в n минут, и которое будет срать окнами. Сделаю без скриптов, будет как демон висеть, лишь бы не текло.

matrasa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.