Hallo Ubuntuusers.
Bin jetzt schon ein ganz großes Stück voran gekommen, mich in GTK+ 3.0 zurecht zu finden. Habe mit glade begonnen die Widgets zu gestalten und hat auch bestens funktioniert. 😀 Jetzt habe ich mal versucht, die Widgets ganz alleine mit GTK+ zu erstellen. Soweit funktioniert das auch alles bestens. Allerdings haben sich dabei ein paar Fragen speziell zu einem ganz normalen Button aufgetan, wo ich euch um euren Rat bitten möchte. Denn dazu konnte ich im Netz leider keine Antwort finden.
Frage 1. Wie kann man die Hintergrundfarbe eines einfachen Buttons bzw. die Schriftfarbe des Buttons ändern? So etwas wie gtk_button_set_color gibt es ja leider nicht.
Frage 2. Wie kann man die Schriftart des Buttons ändern? So etwas wie gtk_button_set_font gibt es ja auch leider nicht.
Frage 3. Wenn ich einen Button mit
1 | button1 = gtk_button_new_with_mnemonic("_Button 1"); |
erstelle, sollte dieser mit Unterstrich unter dem "B" sein. Da ist aber kein Unterstrich unter dem B zu sehen! Das es aber funktioniert konnte ich testen mit
1 | gtk_button_set_use_underline (GTK_BUTTON(button1), TRUE); |
. Wenn die "underline" auf FALSE steht, wird mir der Unterstrich als ein Zeichen der ganz normalen Buttonbeschriftung vor dem B mit auf dem Button angezeigt. Setze ich die underline Funktion wieder auf TRUE, wird der Unterstrich vor dem B nicht mehr angezeigt, aber auch unter dem B ist keiner zu sehen. Woran könnte das liegen?
Frage 4. Es gibt für ein Widget eine Aktivierungsfunktion
1 | gtk_widget_activate (GTK_WIDGET(button1)); |
. Diese Widget-Funktion habe ich mit Button getestet und es gibt auch keine Error Meldung vom Compiler. Also gehe ich mal davon aus, das diese Funktion auch auf einen Button anwendbar ist. Aber! Ich konnte keine Funktion zum deaktivieren finden. Der Gedanke der dahinter steht ist der: Wenn hinter einem Button eine Programmfunktion einprogrammiert ist, die z.B. Daten über eine serielle Schnittstelle sendet, dann soll der Button zwar schon sichtbar sein, aber dennoch nicht aktiv! Denn es muss ja zumindest erst einmal eine serielle Schnittstelle geöffnet werden, bevor dieser Button eine Funktion auslösen kann. Gibt es eine Möglichkeit, einem Button sein "CLICKED-SIGNAL" kurzfristig zu entziehen und später wieder hinzuzufügen? Den Button also zu deaktivieren?
Meine Idee zur Frage 4 als Lösung wäre die: Ich erstelle eine bool-Variable für den entsprechenden Button. Wenn der Button geklickt wird, wird dann diese bool-Variable erst einmal innerhalb der "void" in einer IF-Anweisung abgefragt. Ist die bool-Variable TRUE, dann wird der Inhalt der "void" abgearbeitet, wenn FALSE dann passiert einfach nichts. Damit ich auch sehe, das der Button gerade deaktiviert ist, könnte ich mit der GTK Anweisung
1 | gtk_widget_set_opacity(GTK_WIDGET(button1), 0.25); |
den gesamten Button abgrauen. Das funktioniert zwar hervorragend, ich könnte mir aber auch gut vorstellen, das es da etwas professionelleres gibt.
Ich bedanke mich schon mal bei all denen die sich die Zeit nehmen, mich bei der Einarbeitung in die Linux Programmierung zu unterstützen.
Gruß Tom