GtkWindow 没有加载小部件

GtkWindow is not loading widgets

我正在玩 gtk4 并且有以下内容

static void startapp(GtkApplication *app)
{
    GtkWindow *window = (GtkWindow*)gtk_window_new();
    gtk_window_set_application(window, app);
    gtk_window_set_titlebar(window, gtk_header_bar_new());
    gtk_header_bar_set_show_title_buttons(
        (GtkHeaderBar*)gtk_window_get_titlebar(window), TRUE);
    gtk_window_set_default_widget(window, gtk_button_new_with_label("bar"));
    gtk_window_present(window);
}

int main (int response, char **name)
{
  GtkApplication *app = gtk_application_new ("org.foo", G_APPLICATION_FLAGS_NONE);
  g_signal_connect(app, "activate", (GCallback)startapp, NULL);
  response = g_application_run((GApplication*)app, response, name);
  g_object_unref(app);
  return response;
}

什么有效

什么不是

我认为这与 int response 变量无关。我确实在代码 body 中创建了另一个变量,并将 response = ... ; return response 替换为 int foo = ...; return foo

那么为什么 window 没有加载小部件?

在 GTK4 中,您希望 gtk_window_set_child 设置 window 的子项(与 GTK3 一样,只允许一个子项)。

所以你想要 gtk_window_set_child(window, gtk_button_new_with_label("bar")); 而不是行 gtk_window_set_default_widget(window, gtk_button_new_with_label("bar"));