使用 Windows 错误对话框,我可以使用 CTRL-C 复制窗口文本。
我想允许用户对我在 GTK 应用程序中使用的消息对话框执行相同的操作。
有没有办法让 GTK MessageDialog 类处理复制命令?
使用 Windows 错误对话框,我可以使用 CTRL-C 复制窗口文本。
我想允许用户对我在 GTK 应用程序中使用的消息对话框执行相同的操作。
有没有办法让 GTK MessageDialog 类处理复制命令?
有一种更简单的方法可以做到这一点。在 gtk_message_dialog_new() 之后使用对话框调用 _set_labels_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);
我最终做的是在对话框中添加一个消息处理程序以捕获键盘向上命令。
当它被触发时,我检查了 CTRL-C 组合并将文本放在剪贴板上。