문제

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);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top