从GTK消息对话框复制文本

从GTK消息对话框复制文本,gtk,messagedialog,Gtk,Messagedialog,通过windows错误对话框,我可以使用CTRL-C复制窗口文本 我希望允许用户对我在GTK应用程序中使用的消息对话框执行相同的操作 有没有办法允许GTK MessageDialog类处理复制命令?我最后做的是在对话框中添加一个消息处理程序来捕获键盘向上命令 触发时,我检查了CTRL-C组合键,并将文本放在剪贴板上。有一种更简单的方法。 在gtk消息对话框新建后,通过对话框调用可选择的设置标签 static void _set_label_selectable(gpointer data, gp

通过windows错误对话框,我可以使用CTRL-C复制窗口文本

我希望允许用户对我在GTK应用程序中使用的消息对话框执行相同的操作


有没有办法允许GTK MessageDialog类处理复制命令?

我最后做的是在对话框中添加一个消息处理程序来捕获键盘向上命令


触发时,我检查了CTRL-C组合键,并将文本放在剪贴板上。

有一种更简单的方法。 在gtk消息对话框新建后,通过对话框调用可选择的设置标签

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

您能否提供运行时环境的更多详细信息?Gtk消息对话框类似于任何窗口。因此,在复制文本时应该不会有任何问题。@Praveen,您能提供一些关于类似于任何窗口的含义的见解吗?任何窗口如何处理此问题?我最后不得不捕捉键盘向上的信号。默认情况下,你可以选择并复制GtkMessageDialog的文本,尽管你可以关闭它。这对你不起作用,似乎表明还有别的地方出了问题。您不必使用键盘信号来执行此操作。你在哪个站台?如何显示消息对话框?