Bir metin girişi de dahil olmak üzere, üzerinde bazı widget'lar içeren bir pop-up pencerem (WINDOW_POPUP türünü kullanarak oluşturulan) var. Sorun, girişin üzerine tıkladığımda odağı almamasıdır, bu yüzden hiçbir şey yazamam. Pencerenin klavye odağını almasına izin vermek için ayarladığım bir bayrak var mı?Bir pop-up için klavye odağı nasıl verilir Gtk.Window
6
A
cevap
-1
#include <gtk/gtk.h>
static gboolean delete_event(GtkWidget *widget,
GdkEvent *event,
gpointer data)
{
g_print ("delete event occurred\n");
gtk_main_quit();
return TRUE;
}
static void destroy(GtkWidget *widget,
gpointer data)
{
gtk_main_quit();
}
int main(int argc,
char *argv[])
{
GtkWidget *window;
GtkWidget *windowpopup;
GtkWidget *button;
gtk_init (&argc, &argv);
/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
windowpopup = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_transient_for(GTK_WINDOW(windowpopup),GTK_WINDOW(window));
gtk_window_set_destroy_with_parent(GTK_WINDOW(windowpopup),TRUE);
gtk_widget_show (windowpopup);
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (destroy), NULL);
/* Creates a new button with the label "Hello World". */
button = gtk_button_new_with_label ("Hello World");
g_signal_connect_swapped (G_OBJECT (button), "clicked",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window);
gtk_main();
return 0;
}
4
Odağı gerektiren gtk pencereleri için WINDOW_POPUP kullanamazsınız. Bu 'pop-up'
tahrip edildiğinde Bunun yerine bu benim için çalıştı sonraki işlevleri (veya yöntemleri)GtkWindow *result = g_object_new(GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, NULL);
gtk_widget_set_can_focus(result, TRUE);
gtk_window_set_decorated(GTK_WINDOW(result), FALSE);
gtk_window_set_type_hint(GTK_WINDOW(result), GDK_WINDOW_TYPE_HINT_POPUP_MENU);
gtk_window_set_transient_for(GTK_WINDOW(result), main_top_level_window);
tip GTK_WINDOW_TOPLEVEL ile GtkWindow kullanabilir ve aramalısınız ... pencere listede maalesef simgesi kısa yanıp söner
1
Önceki yanıtlara ve GTK Referansına rağmen, bir GTK_WINDOW_POPUP kullanırken klavye odağını almak mümkündür. Klavye kapmak için çalışan bir geri arama ile ...
GtkWindow *w = gtk_window_new(GTK_WINDOW_POPUP);
g_signal_connect(G_OBJECT(w), "show", G_CALLBACK(on_window_show), NULL);
... "gösteri" olayına bağlamak gerekir: oldukça iyi benim için çalışıyor
static void on_window_show(GtkWidget *w, gpointer user_data) {
/* grabbing might not succeed immediately... */
while (gdk_keyboard_grab(w->window, FALSE, GDK_CURRENT_TIME) != GDK_GRAB_SUCCESS) {
/* ...wait a while and try again */
sleep(0.1);
}
}
.
İlgili konular
- 1. Firefox'taki bağlantıların klavye odaklarına nasıl izin verilir?
- 2. DataGrid, Klavye Odağı Aldığında SelectedItem için DataGridCell'e odaklanın
- 3. Odağı, MVVM
- 4. Bir excel hücresinde bir menüyü açmak için klavye nasıl kullanılır?
- 5. Bir uyarıdan sonra() focus() nasıl verilir?
- 6. Android - yumuşak klavye açıldığında html girişi odağı kaybediyor (ASP.net)
- 7. Bir düğme odağı nasıl alabilir?
- 8. | NSScreen mainScreen | klavye/fare odağı diğer monitöre giderken güncellenmiyor mu?
- 9. Odağı kullanarak bir uygulamanın belirli bir penceresine odağı ayarla
- 10. wpf listview, odağı kaybetti
- 11. Odağı, XAML veya MVVM
- 12. Firefox eklentisi ile bir popup nasıl oluşturulur?
- 13. Twitter Bir popup aracılığıyla OAuth
- 14. Bir EditText'in odağı kaybettiğini nasıl bilebilirim?
- 15. Popup denetimi,
- 16. Bir öğenin odağı kaybetmesi nasıl önlenir?
- 17. Bir uygulama odağı kaybettiğinde nasıl algılanır?
- 18. Veritabanını kullanıyorsa, odağı bir Yükleyiciye doğru olarak nasıl yükleyebilirim?
- 19. Tüm Popup pencereleri nasıl numaralandırılır?
- 20. Odağı bir düğmenin üzerine getirme
- 21. Odağı temizle EditText, softkeyboard
- 22. Android için Gif Klavye
- 23. SPItem için SPGroup izinleri nasıl verilir?
- 24. Jenkins için doğru izinler nasıl verilir?
- 25. MATLAB rakamları için nasıl kalın başlık verilir?
- 26. EditText'ten İstek Odağı Nasıl Kaldırılır?
- 27. JQuery Popup İçeriği
- 28. Nasıl IntelliJ bir çalışma yapılandırmaya bir klavye kısayolu atamak için?
- 29. Sil Popup 8
- 30. Nasıl döngü verilir JQuery
Bu, yalnızca klavye kapacaktır. Diğer programların fare ile tıklanması, klavye odağını onlara aktarmaz. Etrafta iş olabilir, ama ben hiç farkında değilim. –