[gelöst] Gtkmm: Widgets werden nicht angezeigt.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

[gelöst] Gtkmm: Widgets werden nicht angezeigt.

Beitrag von BeS » 02.10.2007 12:17:33

Hallo,

ich bin hier gerade am verzweifeln. Ich schreibe gerade ein kleines Gtkmm Programm und das will nicht so wie ich. ;)

Hier mal die enscheidende Funktion:

Code: Alles auswählen

Window::Window()
    : m_connect_button("Verbindung aufbauen"),
      m_disconnect_button("Verbindung trennen"),
      m_cancel_button("Abbrechen"),
      m_description_label("OpenVPN steuern")
{
    set_border_width(10);
    set_title("OpenVPN Starter");

    Gtk::HButtonBox buttonbox;
    buttonbox.add(m_connect_button);
    buttonbox.add(m_disconnect_button);
    buttonbox.add(m_cancel_button);

    add(buttonbox);
    
    show_all_children();
}
Das ist eine eigen Klasse "Windows" die vopn Gtk::Window abgeleitet ist.

Beim Übersetzen bekomme ich keine Fehler, wenn ich das Programm starte habe ich aber nur ein leeres Fenster.

Wenn ich das Programm so umschreibe, also mal einen Button direkt in das Fenster packe, ohne ButtonBox:

Code: Alles auswählen

Window::Window()
    : m_connect_button("Verbindung aufbauen"),
      m_disconnect_button("Verbindung trennen"),
      m_cancel_button("Abbrechen"),
      m_description_label("OpenVPN steuern")
{
    set_border_width(10);
    set_title("OpenVPN Starter");

    add(m_connect_button);
    
    show_all_children();
}
Dann bekomme ich ein Fenster mit dem m_connect_button. Das Problem muss also irgendwie an der Gtk::HButtonBox liegen, aber ich habe keine Ahnung was da nicht stimmen soll.

Irgendwelche Vorschläge?
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 02.10.2007 19:21:24

OK, das war ne sau dumme Frage von mir :oops:

Ich habe Gtk::HButtonBox im Konstruktor als normale Variable definiert und was passiert damit wenn der Konstruktor abgearbeitet wurde? Richtig, er wird vom Stack wieder abgeräumt und ist damit natürlich nicht mehr vorhanden. Natürlich muss ich Gtk::HButtonBox als Pointer anlegen, damit er auf den Heap kommt und den Konstruktor überlebt.
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

Antworten