现在的位置: 首页 > 综合 > 正文

GtkRadioButton 使用要注意的!

2012年03月26日 ⁄ 综合 ⁄ 共 1520字 ⁄ 字号 评论关闭
要在一个对话框中放入GtkRadioButton, 使用了一下类似的代码:

{
      GtkWidget *dialog = NULL;
 GSList *radio_group = NULL;
 GtkWidget *radio_box = gtk_vbox_new(FALSE, 0);

for(i = 0; i < count; i++)
 {
 
       GtkWidget * radio_item = gtk_radio_button_new_with_mnemonic((radio_group != NULL ? radio_group : NULL), transfer->get_desc(transfer));
                   if(radio_group == NULL)                
                    {
                        radio_group = gtk_radio_button_get_group(radio_item);
                    }
                    gtk_box_pack_start (GTK_BOX (radio_box), GTK_WIDGET(radio_item), FALSE, FALSE, 0);
                    gtk_widget_show(radio_item);
                    g_signal_connect((gpointer)radio_item, "toggled", G_CALLBACK(on_radio_toggled), NULL);
}

    dialog = gtk_dialog_new_with_buttons(_("Send file"),
                                        NULL,
                                        GTK_DIALOG_MODAL,
                                        _("Send"), RESPONSE_OK,
                                        _("Cancel"), RESPONSE_CANCEL,
                                        NULL
                                        );

    gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->vbox), GTK_WIDGET(radio_box), FALSE, FALSE, 0);
    gtk_widget_show_all(dialog);

    if (gtk_dialog_run (GTK_DIALOG (dialog)) == RESPONSE_OK)
    {
        if(active_transfer != NULL)
        {
            active_transfer->send_file(active_transfer, filename);
        }
    }

    gtk_widget_destroy (dialog);
......

}

结果能的到想要的界面效果, 但一旦运行到 gtk_widget_destroy (dialog); 整个程序就挂了,出现一个访问了NUUL地址的错误提示。

原来每个GtkRadioButton都需要在的。
去掉对  if(radio_group == NULL)    的判断就正常了。

抱歉!评论已关闭.