Ich möchte ein Spiel entwickeln, das mehrsprachige Eingabe, einschließlich CJK-Zeichen nehmen kann. Ist es möglich, dass eine GtkDrawingArea das gesamte Fenster ausfüllt und ein GtkEntry darüber "schwebt"? Ist es auch möglich, den Hintergrund und die Grenze des GtkEntry transparent zu machen? Danke für jede Hilfe.Transparent Floating GtkEntry
0
A
Antwort
1
Hier ist, wie ich tat es in my application, mit einer Funktion eine GtkEntry
enthält einen Text Pop-up, auf einem übergeordneten Widget, an den Koordinaten (x, y) in Bezug auf die linke obere Ecke des übergeordneten widget:
GtkWidget *
popup_edit_window(GtkWidget *parent, gint x, gint y, const gchar *text)
{
gint px, py;
gdk_window_get_origin(gtk_widget_get_window(parent), &px, &py);
GtkWidget *edit_popup = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* stackoverflow.com/questions/1925568/how-to-give-keyboard-focus-to-a-pop-up-gtk-window */
GTK_WIDGET_SET_FLAGS(edit_popup, GTK_CAN_FOCUS);
gtk_window_set_decorated(GTK_WINDOW(edit_popup), FALSE);
gtk_window_set_has_frame(GTK_WINDOW(edit_popup), FALSE);
gtk_window_set_type_hint(GTK_WINDOW(edit_popup), GDK_WINDOW_TYPE_HINT_POPUP_MENU);
gtk_window_set_transient_for(GTK_WINDOW(edit_popup), GTK_WINDOW(parent));
gtk_window_set_gravity(GTK_WINDOW(edit_popup), GDK_GRAVITY_CENTER);
GtkWidget *entry = gtk_entry_new();
gtk_widget_add_events(entry, GDK_FOCUS_CHANGE_MASK);
gtk_entry_set_text(GTK_ENTRY(entry), text);
gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1);
gtk_container_add(GTK_CONTAINER(edit_popup), entry);
g_signal_connect_swapped(entry, "focus-out-event", G_CALLBACK(gtk_widget_destroy), edit_popup);
g_signal_connect(entry, "key-press-event", G_CALLBACK(on_edit_popup_key_press), edit_popup);
gtk_widget_show_all(edit_popup);
gtk_window_move(GTK_WINDOW(edit_popup), x + px, y + py);
/* GDK_GRAVITY_CENTER seems to have no effect? */
gtk_widget_grab_focus(entry);
gtk_window_present(GTK_WINDOW(edit_popup));
return edit_popup;
}
gboolean
on_edit_popup_key_press(GtkWidget *entry, GdkEventKey *event, GtkWidget *edit_popup)
{
switch(event->keyval) {
case GDK_Escape:
gtk_widget_destroy(edit_popup);
return TRUE;
case GDK_Return:
case GDK_KP_Enter:
/* here, do whatever you need to do when finished editing */
gtk_widget_destroy(edit_popup);
return TRUE;
}
return FALSE; /* event not handled */
}
um transparent zu machen, sollen Sie nur in der Lage sein zu tun:
gtk_window_set_opacity(GTK_WINDOW(edit_popup), 0.5);
aber bewusst sein, dass die Fenster-Manager, dass nicht unterstützen können oder wählen sie zu ignorieren.
Haben Sie jedoch in Betracht gezogen, dass GTK verwandte Eingabemethodenbibliotheken enthält, damit Benutzer die Eingabemethode für die Eingabe von CJK-Zeichen auswählen können? Keine Notwendigkeit, das Rad neu zu erfinden.
Verwandte Themen
- 1. Making Floating-Taste teilweise transparent android
- 2. Android Floating Aktion Button Semi Transparent Hintergrundfarbe
- 3. GtkEntry text change signal
- 4. GtkEntry & button-press-event
- 5. Schwerer Fehler beim Versuch, Textwert von GTKEntry
- 6. Unten ausrichten Floating Action Button
- 7. JButton floating
- 8. DIV-Box transparent, Text innen nicht transparent
- 9. transparent png wird nicht transparent dargestellt?
- 10. transparent UITextView
- 11. android.View transparent
- 12. Transparent Overlay
- 13. Transparent JPanel
- 14. Transparent QtWidget
- 15. Toolbar transparent
- 16. Floating Rectangle auf dem Bildschirm
- 17. Android - Position ändern Floating Label (Bottom Floating Label) von TextInputLayout?
- 18. Floating-Layout über
- 19. java.io.StreamTokenizer.TT_NUMBER: Floating oder Integer?
- 20. Android Floating EditBox
- 21. obere Zeile floating
- 22. Android Chathead Floating-Aktivität
- 23. Floating div Problem
- 24. CPU Floating-Operationen Kosten
- 25. Vertically align floating DIVs
- 26. CSS Floating Footer
- 27. dynamische floating Benutzersteuerelemente wpf
- 28. Floating Header Navigation Problem
- 29. Floating Exponent Exponentiation Algorithmus
- 30. Tabelle und floating