GTK MessageDialog에서 텍스트를 복사합니다
-
15-09-2020 - |
문제
Windows 오류 대화 상자에서 Ctrl-C를 사용하여 창 텍스트를 복사 할 수 있습니다.
사용자가 GTK 앱에서 사용하고있는 메시지 대화 상자에서 동일한 작업을 수행하도록 허용하고 싶습니다.
GTK MessageDialog 클래스가 복사 명령을 처리 할 수있는 방법이 있습니까?
해결책
내가 작업을 수행 한 것은 키보드 업 명령을 트랩하기 위해 대화 상자에 메시지 처리기를 추가하는 것이 었습니다.
트리거 된 경우 Ctrl-C 콤보를 확인하고 텍스트를 클립 보드에 넣습니다.
다른 팁
이를 더 단순하게하는 방법이 있습니다. GTK_MESSAGE_DIALOG_NEW ()
대화 상자에서 _SET_LABLES_SELECTABLE ()을 호출하십시오.static void _set_label_selectable(gpointer data, gpointer user_data)
{
GtkWidget *widget = GTK_WIDGET(data);
if (GTK_IS_LABEL(widget))
{
gtk_label_set_selectable(GTK_LABEL(widget), TRUE);
}
}
static void _set_lables_selectable(GtkWidget *dialog)
{
GtkWidget *area = gtk_message_dialog_get_message_area(
GTK_MESSAGE_DIALOG(dialog));
GtkContainer *box = (GtkContainer *) area;
GList *children = gtk_container_get_children(box);
g_list_foreach(children, _set_label_selectable, NULL);
g_list_free(children);
}
.
예제
GtkWidget *dialog = gtk_message_dialog_new(opgU_window,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"%s", mbuf);
_set_lables_selectable(dialog);
. 제휴하지 않습니다 StackOverflow