{
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) 的判断就正常了。