gpt4 book ai didi

c - 关闭后显示 GtkApplicationWindow

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:08 27 4
gpt4 key购买 nike

对于 C 和 Gtk+,我完全是个新手。

我正在尝试创建一个带有主应用程序窗口的界面。这个主窗口有一个菜单,它打开第二个窗口(类型为 GtkApplictionWindow)。

我的问题是,一旦我关闭第二个窗口(顶部有 x),我就无法再次打开第二个窗口。

我得到一个错误:

(api:2807): Gtk-CRITICAL **: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed

我已经尝试将函数附加到 destroyhide 信号,并且在我的代码中我已经尝试了 gtk_widget_destroy(window_connections)gtk_widget_hide(window_connections)

我的界面是在 Glade 中创建的。

这是我当前的代码:

#include <gtk/gtk.h>
#include <stdio.h>

GtkWidget *window_connections;

int main(int argc, char *argv[]) {
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *statusbar;

gtk_init(&argc, &argv);

builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "glade/window_main.glade", NULL);

window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
gtk_builder_connect_signals(builder, NULL);

window_connections = GTK_WIDGET(gtk_builder_get_object(builder, "window_connections"));

statusbar = GTK_WIDGET(gtk_builder_get_object(builder, "statusbar"));

gtk_statusbar_push(GTK_STATUSBAR(statusbar), 1, "Hello, World!");

g_object_unref(builder);

gtk_widget_show(window);
gtk_main();

return 0;
}

// called when window is closed
void on_window_main_destroy() {
gtk_main_quit();
}

void window_open_connections() {
gtk_widget_show(window_connections);
}

void window_close_connections() {
gtk_widget_hide(window_connections);
}

void window_hide_test() {
printf("hide\n");
}

帮忙吗?

最佳答案

如果您使用“X”关闭一个窗口,它不仅会被隐藏,而且会在之后被销毁。显然,您以后不能重用该小部件。您需要重新创建它。

这是gtk_widget_hide_on_delete()的地方派上用场。

您可以将它直接连接到 "delete-event" 信号,或者您可以从该信号的处理程序中调用它。然后小部件仅被隐藏,但稍后可以再次显示。

关于c - 关闭后显示 GtkApplicationWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52518548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com