Ich habe GTK :: ApplicationWindow mit einem OpenGL-Widget. Ich möchte die Größe des OpenGL-Widgets bei der Erstellung und bei der Größenänderung abfragen. Dies geschieht, damit ich das Seitenverhältnis ausgleichen kann. Hier ist ein Ausschnitt meines Codes. Das Problem ist, dass wenn ich das Fenster verkleinere oder spawne. Der Wert von m_glAreaWidth und m_glAreaHeight ist immer 0. Das Widget spawnt tatsächlich und reagiert auf die Größenänderung, daher verstehe ich nicht, wie get_allocation
ein Rechteck der Größe 0 ergibt.Problem bekommen Widget-Größe in gtkmm
mainWindow::mainWindow(BaseObjectType* cobject ,const Glib::RefPtr<Gtk::Builder>& builder):
Gtk::ApplicationWindow(cobject),
m_refGlade(builder),
{
//add GLArea Widget
m_TopLayout->pack_start(m_GLArea);
m_GLArea.set_auto_render(true);
signal_size_allocate().connect(sigc::mem_fun(*this, &mainWindow::on_my_size_allocate),false);
//Makes window fill the whole screen
maximize();
show_all();
}
void mainWindow::on_my_size_allocate(Gtk::Allocation& allocation)
{
Gtk::Allocation glAreaAlloc = m_GLArea.get_allocation();
m_glAreaWidth = glAreaAlloc.get_x();
m_glAreaHeight = glAreaAlloc.get_y();
m_GLArea.queue_render();
}