[gtkmm] 2. Fenster



  • Hallo,

    in meinem Programm benötige ich zeitweise ein zweites Fenster, das Eingaben vom Benutzer entgegen nimmt. Ein Gtk::Dialog kommt für meinen Anwendungsbereich nicht in Frage, da das Fenster mehr als eine Eingabe entgegen nehmen soll und ein Gtk::Dialog sich sofort schließt, wenn man auf einen der Buttons klickt. Von daher hatte ich die Idee, mir eine Klasse von Gtk::Window abzuleiten, und dieses Window dann durch mein "Main-Window" starte. Wie lässt sich dieses Starten realisieren, denn ein Gtk::Window hat ja keine show() bzw. run() Methode.

    Weiß jemand eine Antwort auf meine Frage oder hat eine bessere Idee?

    Danke



  • Gtk::Widget hat eine Methode show(), und Gtk::Window ist indirekt davon abgeleitet, also hat auch das show.

    Egal, so ist die Alternative:

    #include <gtkmm.h>
    
    class Bar : public Gtk::Window {
    public:
      Bar() {
        set_title("Zweites Fenster");
        set_default_size(200,300);
    
        show_all();
      }
    };
    
    class Foo : public Gtk::Window {
      Bar b;
    
    public:
      Foo() {
        set_title("Erstes Fenster");
        set_default_size(400,400);
    
        show_all_children();
      }
    };
    
    int main(int argc, char **argv) {
      Gtk::Main m(argc, argv);
    
      Foo f;
      m.run(f);
      return 0;
    }
    


  • Danke, das war die Lösung 🙂 .


Anmelden zum Antworten