2010-09-03 4 views
0

Я все еще работаю на примере по этой ссылке: gtkmm statusicon quits after creation Я изменил функцию таким образом, чтобы открыть поддон в разных окнах, но ничего не показывает.C++ gtk открыть несколько окон

void Tray::on_statusicon_popup(guint button, guint activate_time) { 
    printf("popup!\n"); 
    Gtk::Window w; 
    w.show(); 
} 

Я попытался запустить каждое окно с помощью «Gtk :: Main :: run (w);» и он работает, но я бы не хотел запускать основной цикл для каждого окна.

ответ

1

Вы создаете объект окна в стеке, поэтому он сразу же уничтожается после возврата on_statusicon_popup(). Если вы хотите, чтобы окно переполнило вызов функции, вам нужно создать его в куче и подключиться к его «скрытому» сигналу (или аналогичному) и удалить объект оттуда.

+0

Я не понял ... как мне создать их в куче от моей функции? – Syco

+0

'Gtk :: Window * w = new Gtk :: Window()' ?? – jonner