从 GTK MessageDialog 复制文本

发布于 2024-09-10 01:25:54 字数 131 浏览 2 评论 0原文

对于 Windows 错误对话框,我可以使用 CTRL-C 复制窗口文本。

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

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

With a windows error dialog I can use CTRL-C to copy the window text.

I would like to allow users to do the same thing with the message dialogs I am using in my GTK app.

Is there a way to allow a GTK MessageDialog class to handle the copy command?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抹茶夏天i‖ 2024-09-17 01:25:54

有一种更简单的方法可以做到这一点。
之后,使用对话框调用 _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);
}

在 gtk_message_dialog_new()示例

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

There's a simpler way to do it.
Call _set_lables_selectable() with the dialog, after gtk_message_dialog_new()

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

example

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);
那支青花 2024-09-17 01:25:54

我最终所做的是将消息处理程序添加到对话框中以捕获键盘向上命令。

当它被触发时,我检查了 CTRL-C 组合并将文本放到剪贴板上。

What I ended up doing was to add a message handler to the dialog to trap the Keyboard up command.

When that was triggered I checked for the CTRL-C combo and put the text onto the clipboard there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文