You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTK4通过XML创建的窗口调用Run()后立即关闭问题

GTK4窗口显示后立即关闭的问题

根据文档说明,使用g_application_run并执行引用计数递增操作后,窗口应保持打开状态,但我按此操作后,GUI仍会在显示后立即关闭,不清楚问题所在:

GtkBuilder* myGtkBuilder;
GtkWidget* myGtkWindow;
GtkApplication* myGtkApp;

// 由于将使用XML设计文件,传入的'app'参数不会被使用
static void activate_cb(GtkApplication* app, gpointer user_data) {
    
    // 从XML文件加载UI
    myGtkBuilder = gtk_builder_new_from_file("gtk4.glade");

    // 从builder中获取窗口部件
    myGtkWindow = GTK_WIDGET(gtk_builder_get_object(myGtkBuilder, "window"));

    // (可选)在此处连接GUI元素的信号(如有需要)

    // 不使用gtk_widget_set_visible(myGtkWindow, true);来显示窗口
    gtk_window_present(GTK_WINDOW(myGtkWindow));
    g_object_ref(myGtkWindow); // 增加引用计数

    // 清理资源
    g_object_unref(myGtkBuilder);
}


int main(int argc, char *argv[]) 
{ 
    int status;
    GError* error = NULL;
    
    gtk_init(&argc, &argv);  // 是否需要?

    myGtkApp = gtk_application_new("myAppId.id", G_APPLICATION_DEFAULT_FLAGS);  // vs gtk_application_window_new?  G_APPLICATION_DEFAULT_FLAGS vs G_APPLICATION_FLAGS_NONE
    g_signal_connect(myGtkApp, "activate", G_CALLBACK(activate_cb), NULL);
    status = g_application_run(G_APPLICATION(myGtkApp), argc, argv);

    // 释放资源
    g_object_unref(myGtkApp);

    return status;
}

我尝试过多个XML文件,表现均一致:

<?xml version="1.0"?>
<interface>
  <object class="GtkWindow" id="window">
    <property name="title">Checkboxes Example</property>
    <child>
      <object class="GtkBox" id="box">
        <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
        <child>
          <object class="GtkCheckButton" id="checkbox1">
            <property name="label">Checkbox 1</property>
          </object>
        </child>
        <child>
          <object class="GtkCheckButton" id="checkbox2">
            <property name="label">Checkbox 2</property>
          </object>
        </child>
      </object>
    </child>
  </object>
</interface>

遗憾的是,Stack Overflow上另外两个类似问题的解决方案对我无效(它们是基于Python的)。

内容的提问来源于stack exchange,提问作者Ben Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:40:25