怎样关闭颜色对话框?

发布于 2022-08-04 12:12:56 字数 84 浏览 5 评论 3

我用glade3画了2个窗口,一个是颜色选择框,我想点确定就关闭颜色选择框,请问大伙怎样实现,我用gtk_quite_main()就两个都退出,郁闷,所以特此贴求解!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

心如狂蝶 2022-08-18 19:13:06

gtk_widget_destroy会将窗口清除掉,你需要重新读取GladeXML,xml=glade_xml_new()...
其实你可以将他隐藏起来,再打开的时候就显示就可以了。

更好的方法是用
GtkWidget*          gtk_color_selection_dialog_new      (const gchar *title);
来生成GtkColorSelectionDialog

○闲身 2022-08-18 18:39:18

这个我用了,但我需要再打开的时候就会出错,“什么没有这个控件”之类的提示。
我的 代码:(只列出相关代码)
typedef struct{
                GladeXML *xml;
                GtkWidget *textview;
                GtkTextBuffer *buffer;
                char *str;
                GtkWidget *statusbar;
                GtkWidget *dialog;
        }app;
app *p;
void show(GtkWidget *widget,app *p)//回调函数
{
        p->dialog=glade_xml_get_widget(p->xml,"colorselectiondialog1");//棰滆壊dialog
        if(!p->dialog)
        {
                g_print("error in the fun of show()n");
                exit(1);
        }
        
        gtk_widget_show(p->dialog);

}

void delete_event( GtkWidget *widget,GtkWidget *dialog )//关闭
{
    gtk_widget_destroy(dialog);
        g_print("safe in the delete_event()n");
        if(!dialog)
        {
                g_print("error in the closen");
                exit(1);
        }
   
}

主函数部分:
color=glade_xml_get_widget(p->xml,"chang_color");
button=glade_xml_get_widget(p->xml,"colorsel-ok_button1");
g_signal_connect(G_OBJECT (color), "activate",G_CALLBACK(show),p);//call color dialog
g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (delete_event), p->dialog);

娇俏 2022-08-18 03:18:37

用gtk_widget_destroy()销毁你要销毁的窗口。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文