Beitrag vom 4. Februar 2016
Mein Betriebssystem: Xubuntu 14.04.3 LTS (64-Bit)
Das ISO-Image muss für die Installation von Xubuntu mit dem Windows-Programm Win32 Disc Imager auf einen USB-Stick (1 GByte oder größer) übertragen werden. Danach den PC / Notebook mit der Boot-Option "USB-Stick" starten...
Installation Code:Blocks IDE und wxWidgets (GUI-Bibliothek)
Das geht ganz leicht mit Hilfe des Ubuntu Software Centers.
Anm.: Man kann Code::Blocks und wxWidgets auch in Windows 7 und Co. installieren. Bisher ist mir das jedoch nicht geglückt. |
Vergessen Sie bitte nicht, unten alle Häkchen zu setzen!
Der Compiler, der Debugger, die Contrib plugins und wxWidgets nämlich werden unbedingt gebraucht.
Eine einfache Stoppuhr mit Code::Blocks und wxWidgets programmieren
So soll die kleine Stoppuhr aussehen:
Stoppuhr-Projekt für Code::Blocks / wxWidgets, 250 kByte
Ich erläutere hier nur ganz kurz, wie man diese Stoppuhr "baut".
Als erstes gestaltet man seine GUI mit dem GUI-Builder wxSmith.
Wir erstellen ein neues Projekt mit wxWidgets, wählen wxWidgets 3.0x und nennen es Stoppuhr02 und erstellen ebenfalls einen Ordner Stoppuhr02.
Wir wählen danach wxFormBuilder und Dialog Based aus.
Schließlich wählen wir noch Create Empty Project aus.
Das führt zu der folgenden Meldung, die wir mit OK bestätigen:
Es wird automatisch ein neuer wxDialog angelegt (mit OK bestätigen oder Namen ändern).
Die folgende Meldung ebenfalls mit OK bestätigen:
Sobald nun die leere Arbeitsfläche erscheint, wählen wir wxSmith - AddwxDialog:
Damit erhalten wir die Fläche des späteren Fensters, die wir nun mit widgets (Buttons, Textfelder usw.) bestücken können:
Nun ist es wichtig, ganz zu Anfang ein wxPanel (aus dem Tab Standard) einzufügen.
Auf diesem Panel können danach alle 3 Buttons, die wxStaticBox (Beschriftung "Zeit in Sekunden") und das Textfeld wxStaticText (also die "0") frei positioniert werden:
Die Buttons beschriften wir (Label) wir mit Reset, Start und Stopp.
Dabei ist gut zu erkennen, dass es eine Hierarchie gibt in den Resources. Dort erscheinen alle widgets, die wir in das Fenstern eingefügt haben in der Form wxButton:Button1 (Beispiel).
Dabei ist wxButton die Klasse und Button1 der Name der von uns erzeugten Instanz.
Die Beschriftung der Buttons (Label) ändert natürlich nichts am Namen der Instanz.
Einen wxTimer brauchen wir natürlich auch. Der findet sich im Tab Tools:
Wichtig: Öfter mal speichern!
Nun soll noch die Font-Size des wxStaticText vergrößert werden. Falls man es dabei etwas übertreibt (Schrift zu groß) stürzt Code::Blocks leider ab. Vor diesem Schritt noch einmal zu speichern ist also eine super Idee!
Ich habe eine Schriftgröße von 24 ausgewählt. Als Label von wxStaticText1 schreiben wir eine "0" in das Feld "Label" in den Eigenschaften des widgets.
Nun werden die widgets (Button1, Button2, Button3, StaticText1 und wxTimer) der Reihe nach doppelt angeklickt. Dabei entstehen sofort die entsprechenden Event Handler im neuen Tab Stoppuhr02Main.cpp:
In die Funktionen der Event Handler schreiben wir nun den jeweiligen Code für die Aktionen, die bei Tastendruck oder Ablauf des Timerintervalls von Timer1 ausgeführt werden sollen:
void Stoppuhr02Dialog::OnButton1Click(wxCommandEvent& event) { // Reset Timer1.Stop(); // Ausgabe "0" in Textfeld StaticText1->SetLabel(_T("0")); } void Stoppuhr02Dialog::OnButton2Click(wxCommandEvent& event) { // Start Timer1.Start(); } void Stoppuhr02Dialog::OnButton3Click(wxCommandEvent& event) { // Stopp Timer1.Stop(); } void Stoppuhr02Dialog::OnTimer1Trigger(wxTimerEvent& event) { // Label von wxStaticText 1 in ZahlString speichern: wxString ZahlString = StaticText1->GetLabel(); // long int Zahl1 deklarierern long Zahl1; // ZahlString in long int umwandeln ZahlString.ToLong(&Zahl1); // Zahl1 um 1 erhöhen und wieder in wxString umwandeln Zahl1++; wxString StaticText1Output = wxString::Format(wxT("%d"), Zahl1); // Ausgabe in Textfeld StaticText1->SetLabel(StaticText1Output); } |
Das sieht dann so aus:
Wenn alles fertig ist wählen wir Build and run. Dann müsste das compilierte GUI-Programm erscheinen und auch funktionieren:
Dieses Stoppuhr-Programm lässt sich natürlich noch verbessern.
Als Schnell-Einstieg ist es aber in dieser simplen Form bestens geeignet, um schnell ein Gefühl für die Arnbeitsweise mit Code::Blocks und wxWidgets / wxSmith zu bekommen.
.