问题描述
我使用 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 <[email protected]>
Int Elligence Group <[email protected]></property>
<property name="documenters">Artur Tarasyan <Mr.Tara[email protected]></property>
<property name="translator-credits" translatable="yes">Grigor Sargsyan <[email protected]> </property>
<property name="artists">Janik Tarverdyan <Mr.J.Tarverdyan#master-mind.llc></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 (将#修改为@)