| Autor |
Nachricht |
evilissimo
Chefkoch
Benutzerprofil
Anmeldungsdatum: 11.11.2003
Beiträge: 2281
|
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
|
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
|
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
|
rüdiger Moderator
00:01:59 20.06.2005 Titel: |
|
Zitieren |
Das kann doch auch gleich in die FAQ. |
|
|
|
 |
miller_m
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
|
miller_m Mitglied
17:18:20 20.06.2005 Titel: |
|
Zitieren |
|
 |
evilissimo
Chefkoch
Benutzerprofil
Anmeldungsdatum: 11.11.2003
Beiträge: 2281
|
evilissimo Chefkoch
17:54:37 20.06.2005 Titel: |
|
Zitieren |
|
 |
miller_m
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
|
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
|
evilissimo Chefkoch
21:48:00 20.06.2005 Titel: |
|
Zitieren |
|
 |
miller_m
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.10.2001
Beiträge: 2557
|
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 |
|
|
|
 |
nman
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 12896
|
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.
|
|
 |