Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: 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: 11.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 22: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/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
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
};
C/C++ Code:
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
};
C/C++ Code:
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/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
}
C/C++ Code:
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
}
C/C++ Code:
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/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
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
}
C/C++ Code:
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
}
C/C++ Code:
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 11:28:06 21.06.2005, insgesamt 1-mal bearbeitet
Werbeunterbrechung
gtkmm is crap
Unregistrierter




Beitrag gtkmm is crap Unregistrierter 23:09:32 19.06.2005   Titel:              Zitieren

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


WTF??
evilissimo
Chefkoch

Benutzerprofil
Anmeldungsdatum: 11.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 23:21:35 19.06.2005   Titel:              Zitieren

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

Bildet einen Functor auf die Methode on_button_quit_clicked

C/C++ Code:
m_quit_button.signal_clicked().connect( sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked) );
C/C++ Code:
m_quit_button.signal_clicked().connect( sigc::mem_fun(*this,&MyWindow::on_button_quit_clicked) );
C/C++ Code:
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: 22629
Beitrag rüdiger Moderator 00: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 17:18:20 20.06.2005   Titel:              Zitieren

als anhang für die faq ein komplettes tutorial
http://www.tu-chemnitz.de/informatik/friz/Grundl-I ....... senz/Deutsches_Tutorial/Frame/Einleitung/frame.htm
http://www.tu-chemnitz.de/informatik/friz/Grundl-I ....... _html/Download/Tutorial/tutorial_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 17:19:13 20.06.2005, insgesamt 1-mal bearbeitet
evilissimo
Chefkoch

Benutzerprofil
Anmeldungsdatum: 11.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 17: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 17:55:26 20.06.2005, insgesamt 1-mal bearbeitet
miller_m
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
Beitrag miller_m Mitglied 21: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: 11.11.2003
Beiträge: 2281
Beitrag evilissimo Chefkoch 21: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 22: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: 12896
Beitrag nman Moderator 22: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/C++ Forum :: 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, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de 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.