텍스트 항목을 포함하여 위젯이 포함 된 팝업 창이 있습니다 (WINDOW_POPUP 유형을 사용하여 생성 됨). 문제는 항목을 클릭 할 때 포커스가 표시되지 않으므로 아무 것도 입력 할 수 없다는 것입니다. 창에 키보드 포커스를 허용하도록 설정해야하는 플래그가 있습니까?팝업 Gtk.Window에 키보드 포커스를 부여하는 방법
6
A
답변
-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
포커스가 필요한 gtk-windows에는 WINDOW_POPUP을 사용할 수 없습니다. 이 '팝업'이
을 파괴 할 때 대신 당신이 나를 위해 일한 다음 기능 (또는 방법)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);
을 형 GTK_WINDOW_TOPLEVEL와 GtkWindow를 사용하여 호출해야 ... 창 목록에서 불행하게도 아이콘이 짧은 깜박
1
이전 답변과 GTK 참조에도 불구하고 GTK_WINDOW_POPUP을 사용할 때 키보드 포커스를 잡는 것이 가능합니다. 당신은 키보드를 잡아하려고 콜백으로 ...
GtkWindow *w = gtk_window_new(GTK_WINDOW_POPUP);
g_signal_connect(G_OBJECT(w), "show", G_CALLBACK(on_window_show), NULL);
... "연락처보기"이벤트에 연결해야합니다 꽤 잘 나를 위해 작동
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);
}
}
.
관련 문제
- 1. Tkinter 파일 대화 상자 포커스를 부여하는 방법
- 2. C# 프로그램을 통해 프로그램을 열고이 프로그램에 포커스를 부여하는 방법
- 3. 팝업 컨트롤에서 키보드 입력을 함정에 넣는 방법
- 4. Windows CE 5.0의 팝업 키보드
- 5. UITextField - 눌렀을 때 키보드 팝업
- 6. iPad 회전 및 키보드 팝업
- 7. 숫자가있는 Flex Mobile 팝업 키보드
- 8. 내 listview가 Qt에서 키보드 포커스를 얻지 못했습니다.
- 9. JDialog에서 JTextField에 키보드 포커스를 얻을 수 없습니다.
- 10. Xamly는 DataGridTemplateColumn 셀의 요소에 키보드 포커스를 설정합니까?
- 11. ListBox 항목에 포커스를 설정하면 키보드 탐색이 중단됩니다.
- 12. 키보드 포커스를 단일 구성 요소에 유지하려면 어떻게합니까?
- 13. WPF UserControl은 키보드 포커스를 교환하고 보존합니다.
- 14. 키보드 포커스를 안드로이드로 옮기는 방법은 무엇입니까?
- 15. listview에서 등급을 부여하는 방법
- 16. 특정 템플릿 우정을 부여하는 방법
- 17. WPF 페이지에 제목을 부여하는 방법
- 18. subsonic.core.dll에 강력한 이름을 부여하는 방법
- 19. 경고 팝업 후 브라우저로 포커스를 되 돌리지 않음
- 20. 선택한 경우 TreeViewItem의 컨트롤에 포커스를 설정하는 방법
- 21. 프로그래밍 방식으로 WPF TreeViewItem에서 키보드 포커스를 얻을 수 있습니까?
- 22. jquery에서 포커스를 이동하는 방법?
- 23. jquery를 사용하여 HTML 캔버스에 키보드 포커스를 지정하려면 어떻게해야합니까?
- 24. ContentPresenter의 내용이 바뀌면 키보드 포커스를 어떻게 설정할 수 있습니까?
- 25. 내게 필요한 옵션 API - 키보드 포커스를 특정 요소로 설정
- 26. DatePicker : 텍스트 상자와 버튼 모두 키보드 포커스를 얻습니까?
- 27. 팀이 기존 제품을 사용하도록 동기 부여하는 방법
- 28. 사전에 하드 코드 된 값을 부여하는 방법
- 29. 오픈 소스로 책의 라이센스를 부여하는 방법
- 30. 플레이어에게 고유 한 번호를 부여하는 방법
이렇게하면 키보드를 독점적으로 잡을 수 있습니다. 마우스로 다른 프로그램의 창을 클릭해도 키보드 초점이 이동되지 않습니다. 해결 방법이있을 수 있지만 어떤 것도 알지 못합니다. –