尝试第二次显示时 GtkAboutDialog 是否崩溃

问题描述

我使用 GtkAboutDialog 在单击按钮时打开。它在第一次点击时工作正常,但在第二次点击时它只是崩溃。在按钮单击信号上,我只是使用 gtk_widget_show()显示对话框。关于对话框在 .ui 文件中描述

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.1 -->
<interface>
  <requires lib="gtk+" version="3.24"/>
  <object class="GtkAboutDialog" id="about_warehouse_dialog">
    <property name="name">about_warehouse</property>
    <property name="can-focus">False</property>
    <property name="destroy-with-parent">True</property>
    <property name="type-hint">dialog</property>
    <property name="program-name">Պահեստ</property>
    <property name="version">1.0</property>
    <property name="copyright" translatable="yes">  
text 
</property>
    <property name="authors">Grigor Sargsyan &lt;[email protected]&gt;
Int Elligence Group &lt;[email protected]&gt;</property>
    <property name="documenters">Artur Tarasyan &lt;Mr.Tara[email protected]&gt;</property>
    <property name="translator-credits" translatable="yes">Grigor Sargsyan &lt;[email protected]&gt; </property>
    <property name="artists">Janik Tarverdyan &lt;Mr.J.Tarverdyan#master-mind.llc&gt;</property>
    <property name="logo">../../data/media/image/logo/logo_About.png</property>
    <property name="wrap-license">True</property>
    <property name="license-type">custom</property>
    <child internal-child="vBox">
      <object class="GtkBox">
        <property name="can-focus">False</property>
        <property name="orientation">vertical</property>
        <property name="spacing">2</property>
        <child internal-child="action_area">
          <object class="gtkbuttonBox">
            <property name="can-focus">False</property>
            <property name="layout-style">end</property>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">False</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <placeholder/>
        </child>
      </object>
    </child>
  </object>

我正在使用 GtkAboutDialog 对象检索那里描述的 GtkBuilder,并将其分配给我为其调用 gtk_widget_show() 的指针。我不确定为什么会发生这种情况。我没有定义任何销毁对象的信号。

C 代码: 我正在以这种方式检索对象,其中 main_wind_ob->pmenu_builder 是与上述 .ui 文件关联的 GtkBuilder 对象。

main_wind_ob->about_dialog = GTK_WIDGET
                             (                           
                     gtk_builder_get_object
                                                                                 
                            (
                                                                     
                          main_wind_ob->pmenu_builder,"about_warehouse_dialog"
                                                                             
                           )
                          );

这是应该显示对话框的按钮点击信号。

static void
on_pmenu_about_dialog_clicked(gtkbutton * button,gpointer userdata)
{
#ifdef DEBUG
  printf("\non_pmenu_about_dialog_clicked()\n");
#endif
    mainwindow * main_wind = MAIN_WINDOW(userdata);
    gtk_widget_show(main_wind->about_dialog);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)