Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: FAQ - GUIs ::  gtkmm Beispiel Programm "zu Fuß" (ohne Glade)     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
evilissimo
Chefkoch

Benutzerprofil
Anmeldungsdatum: 12.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 23:44:04 19.06.2005   Titel:   gtkmm Beispiel Programm "zu Fuß" (ohne Glade)            Zitieren

Wenn ihr wissen wollt wie man ein ganz einfache gtkmm Anwendung macht, hier ein beispiel:

C++:
1
2
3
4
5
6
7
8
9
10
11
#include <gtkmm/Main.h>   // Für jede Anwendung benötigt um Gtk+ und Gtkmm zu intialisieren
#include <gtkmm/Button.h> // Für einen Button
#include <gtkmm/Window.h> // Für ein Fenster 8)
 
// Einfach von Gtk::Window erben
struct MyWindow : public Gtk::Window
{
  MyWindow();
  Gtk::Button m_quit_button;     // Wir wollen mal einen Button
  void on_button_quit_clicked(); // Und das hier soll beim clicken ausgeführt werden
};


Soweit so gut, nun haben wir ein Fenster von Gtk::Window erben lassen und ein paar komponenten hinzugefügt, jetzt richten wir das Fenster einmal ein:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
MyWindow::MyWindow()
: m_quit_button(Glib::locale_to_utf8("Quit")) // Button Beschriftung setzen
{
  set_size_request( 200 , 100 ); // Setzen der Fenstergröße
 
  set_title(Glib::locale_to_utf8("Hello World")); // Titel / Caption setzen
 
  add(m_quit_button);  // Dem Fenster den Button zuordnen
 
  //Click Signal der Method on_button_quit_clicked() zu ordnen
m_quit_button.signal_clicked().connect(sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked));
 
  show_all(); // Alle show() bei allen childs und sich selbst rekursiv aufrufen
}
 
// Signal
void MyWindow::on_button_quit_clicked()
{
  hide();// Fenster schließen
}


Nun haben wir das Fenster fertig, nun noch die main()-Funktion fertig stellen und Gtk+/gtkmm Initialisieren.

C++:
1
2
3
4
5
6
7
8
9
10
11
int main(int argc, char**argv)
{
// Um Standard Gtk+ Commandline Optionen zu garantieren werden die argumente zur Initialisierung mit übergeben
  Gtk::Main main_obj(argc,argv);
 
  MyWindow window_obj;      // Eine Instanz unseres Spezialisierten Fensters
 
  main_obj.run(window_obj); // Starten der Anwendung
 
  return EXIT_SUCCESS;      // return 0
}


Tada das wars auch schon. Wenn euch das gefallen hat schreib ich evtl. noch ein paar Beispiele zu anderen Themen, gebt einfach mal einwenig Feedback und macht auch ein paar Verbesserungvorschläge

_________________
evilissimo - R.I.P. dmr
< Moderator im C++/CLI Forum und im C++ Forum >
About Singletons: "Anyway, if our experts can make this mistake, you have made it and you don't even know about it."


Zuletzt bearbeitet von nman am 12:28:06 21.06.2005, insgesamt 1-mal bearbeitet
Werbeunterbrechung
gtkmm is crap
Unregistrierter




Beitrag gtkmm is crap Unregistrierter 00:09:32 20.06.2005   Titel:              Zitieren

Zitat:
C++:
m_quit_button.signal_clicked().connect(sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked));


WTF??
evilissimo
Chefkoch

Benutzerprofil
Anmeldungsdatum: 12.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 00:21:35 20.06.2005   Titel:              Zitieren

C++:
sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked)

Bildet einen Functor auf die Methode on_button_quit_clicked

C++:
m_quit_button.signal_clicked().connect( sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked) );

Und hier wird eben der Functor auf die Methode an das clicked signal des buttons übergeben.

_________________
evilissimo - R.I.P. dmr
< Moderator im C++/CLI Forum und im C++ Forum >
About Singletons: "Anyway, if our experts can make this mistake, you have made it and you don't even know about it."
rüdiger
Moderator

Benutzerprofil
Anmeldungsdatum: 11.07.2001
Beiträge: 23067
Beitrag rüdiger Moderator 01:01:59 20.06.2005   Titel:              Zitieren

Das kann doch auch gleich in die FAQ. :arrow:

_________________
.
miller_m
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
Beitrag miller_m Mitglied 18:18:20 20.06.2005   Titel:              Zitieren

als anhang für die faq ein komplettes tutorial
http://www.tu-chemnitz.de ....... rame/Einleitung/frame.htm
http://www.tu-chemnitz.de ....... utorial_mit_beispiele.zip

ps: habe es selber noch nicht gelesen aber vielleicht macht das ja mal einer und
beurteilt es. im zweifelsfall könnte man es ja wieder aus der faq entferen.

[edit]link


Zuletzt bearbeitet von miller_m am 18:19:13 20.06.2005, insgesamt 1-mal bearbeitet
evilissimo
Chefkoch

Benutzerprofil
Anmeldungsdatum: 12.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 18:54:37 20.06.2005   Titel:              Zitieren

In dem Tutorial wird eine sehr alte Version verwendet ( < 2.4 ) aktuell ist 2.6.x <
Das problem ist hauptsächlich das sich die API von 2.2 auf 2.4 geändert hat und von 2.4 auf 2.6 neue sachen hinzugekommen sind.

Das englische Tutorial sollte trotzdem als erstes jedem nahe gelegt sein.

http://gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/index.html

_________________
evilissimo - R.I.P. dmr
< Moderator im C++/CLI Forum und im C++ Forum >
About Singletons: "Anyway, if our experts can make this mistake, you have made it and you don't even know about it."


Zuletzt bearbeitet von evilissimo am 18:55:26 20.06.2005, insgesamt 1-mal bearbeitet
miller_m
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
Beitrag miller_m Mitglied 22:28:15 20.06.2005   Titel:              Zitieren

ja wie gesagt habe es nicht gelesen sondern nur vorgeschlagen, wenn dies
nätürlich so ist dann wäre es falsch in faq zu stellen.
evilissimo
Chefkoch

Benutzerprofil
Anmeldungsdatum: 12.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 22:48:00 20.06.2005   Titel:              Zitieren

@miller_m: war kein Vorwurf, ich kannte das tutorial auch schon


Ich werde evtuell ein paar Beiträge mehr schreiben zur aktuellen API.

MFG

_________________
evilissimo - R.I.P. dmr
< Moderator im C++/CLI Forum und im C++ Forum >
About Singletons: "Anyway, if our experts can make this mistake, you have made it and you don't even know about it."
miller_m
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
Beitrag miller_m Mitglied 23:15:45 20.06.2005   Titel:              Zitieren

eViLiSSiMo schrieb:
@miller_m: war kein Vorwurf, ich kannte das tutorial auch schon

auch nicht so aufgefasst :D
nman
Moderator

Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 13912
Beitrag nman Moderator 23:21:30 20.06.2005   Titel:              Zitieren

Ich würde das dann gleich 1:1 in die FAQ verschieben, damit wir da mal ein bisschen was drin haben, kann ja bei Gelegenheit auch überarbeitet werden; wer nicht zufrieden damit ist, spreche für jetzt, oder schweige für immer. ;)

_________________
…but tuesday's just as bad.
c++.de :: FAQ - GUIs ::  gtkmm Beispiel Programm "zu Fuß" (ohne Glade)   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.