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