gtkmm, äähm ja...wie nun weiter?



  • Hi zusammen,

    Ich versuche mich nach diesem Tutorial http://magazin.c-plusplus.net/artikel/GTKmm Tutorial Teil 2 in gtkmm einzuarbeiten. Das Erste Beispiel klappt. ich habe dann ein Fenster von 200*200 grösse. Das sieht so aus:

    #include <gtkmm.h>
    
    int main(int argc, char *argv[])
    {
        Gtk::Main main_obj(argc, argv);
        Gtk::Window window_obj;
        main_obj.run(window_obj);
        return 0;
    }
    

    Im zweiten Beispiel (Worauf auch der Link oben verweist habe ich folgenden Code:

    struct MyWindow : Gtk::Window
    {
        MyWindow();
    
        Gtk::VBox   m_vbox;
        Gtk::HBox   m_hbox;
        Gtk::Label  m_label1;
        Gtk::Label  m_label2;
        Gtk::Label  m_label3;
    };    
    
    MyWindow::MyWindow()
    : Gtk::Window(),
      m_vbox(true,5),// homogene Ausrichtung und 5 px Abstand
      m_hbox(true,5),// homogene Ausrichtung und 5 px Abstand
      m_label1("Label 1"),
      m_label2("Label 2"),
      m_label3("Label 3")
    {
        // Text der Titelleiste setzen
        set_title("GTKmm Tutorial Teil 2");
    
        // m_label1 der horizontalen box als erstes Element übergeben
        m_hbox.pack_start(m_label1);
        // m_label2 der horizontalen box als zweites Element übergeben
        m_hbox.pack_start(m_label2);
    
        // m_hbox der vertikalen box als erstes Element übergeben
        m_vbox.pack_start(m_hbox);
        // m_label3 der vertikalen box als zweites Element übergeben
        m_vbox.pack_start(m_label3);
    
        // die vertikale Box an das Fenster übergeben
        add(m_vbox);
    
        // sorgt dafür, dass alle Widgets angezeigt werden
        show_all_children();
    }
    

    Dies sollte ein Fenster erzeugen mit drei Label.
    Meine frage ist nun, wie ich dieses Fenster nun aufrufen kann, das ist mir nicht ganz klar...

    Ich versuchte es mit main_obj.run(Window); und main_obj.run(MyWindow); was dann etwa zusammenbebastelt so aussieht:

    [cpp]
    #include <iostream>
    #include <gtkmm.h>

    using std::cout;
    using std::endl;

    struct MyWindow : Gtk::Window
    {
    MyWindow();

    Gtk::VBox m_vbox;
    Gtk::HBox m_hbox;
    Gtk::Label m_label1;
    Gtk::Label m_label2;
    Gtk::Label m_label3;
    };

    MyWindow::MyWindow()
    : Gtk::Window(),
    m_vbox(true,5),// homogene Ausrichtung und 5 px Abstand
    m_hbox(true,5),// homogene Ausrichtung und 5 px Abstand
    m_label1("Label 1"),
    m_label2("Label 2"),
    m_label3("Label 3")
    {
    // Text der Titelleiste setzen
    set_title("GTKmm Tutorial Teil 2");

    // m_label1 der horizontalen box als erstes Element übergeben
    m_hbox.pack_start(m_label1);
    // m_label2 der horizontalen box als zweites Element übergeben
    m_hbox.pack_start(m_label2);

    // m_hbox der vertikalen box als erstes Element übergeben
    m_vbox.pack_start(m_hbox);
    // m_label3 der vertikalen box als zweites Element übergeben
    m_vbox.pack_start(m_label3);

    // die vertikale Box an das Fenster übergeben
    add(m_vbox);

    // sorgt dafür, dass alle Widgets angezeigt werden
    show_all_children();
    }

    int main(int argc, char *argv[])
    {
    Gtk::Main main_obj(argc, argv);
    // Gtk::Window window_obj;;
    main_obj.run(Window); // <---- Da
    return 0;
    }
    [/cpp]

    Aber das funktioniert nicht. Ok, es ist eine totale Anfängerfrage, aber wenn mir jemand sagen könnte wo mein Denkfehler liegt, wäre ich echt froh. Ich weiss, der Code oben ist nur Copy&Paste und das sollte man nicht unbedingt machen, aber ich versuchte eigentlich durch Erfahrung und ausprobieren diese Funktionen genauer zu erfahren...

    Grüsse pazifi



  • ohne Ahnung von GTK zu haben aber:

    int main(int argc, char *argv[])
    {
        Gtk::Main main_obj(argc, argv);
        MyWindow myWindow_obj;
        main_obj.run(myWindow_obj);
        return 0;
    }
    

    sollte es gehen du musst dem Beispiel nach ein Objekt der run() Methode übergeben.



  • Hmm,..

    leider nicht. Es öffnet sich immer noch nur ein Fenster ohne diese Definitionen (Also 200*200 ohne nix).



  • 🙄 Falsches Forum



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • kaffee schrieb:

    🙄 Falsches Forum

    Oh, sorry ^^"



  • pazifi schrieb:

    Hmm,..

    leider nicht. Es öffnet sich immer noch nur ein Fenster ohne diese Definitionen (Also 200*200 ohne nix).

    Hast du die main so abgeändert wie i_like_it es postete?
    Das sollte nämlich funktionieren...

    pazifi schrieb:

    kaffee schrieb:

    🙄 Falsches Forum

    Oh, sorry ^^"

    Merks dir fürs nächste mal 😉



  • kaffee schrieb:

    pazifi schrieb:

    Hmm,..

    leider nicht. Es öffnet sich immer noch nur ein Fenster ohne diese Definitionen (Also 200*200 ohne nix).

    Hast du die main so abgeändert wie i_like_it es postete?
    Das sollte nämlich funktionieren...

    Genau so 😕


Log in to reply