关闭 GTK 对话框窗口

问题描述 投票:0回答:1

我正在尝试在单击退出按钮后关闭 Linux GTK 对话框,有什么帮助吗?

void on_linux_exit_clicked()
{
     
     // gtk_main_quit ();    << this closes entire Program 
     // gtk_window_close (GtkWindow* window);
     //gtk_window_close (GtkWindow *window);
     // gtk_window_close(window);
    // gtk_window_close(); 
    // gtk_window_close GTK_WINDOW(window);
}


  void on_network_and_computer_clicked(){
      // create a window with four buttons with the text "Connection Configuration", "Connection Creation", "Computer Name", "Linux Network Settings"
      GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
      GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
      gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS); 
      gtk_window_set_title(GTK_WINDOW(window), "Network and Computer Settings");
      gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
          
      GtkWidget *btn_settings_dialog = gtk_button_new_with_label("Network Connection Configuration");
      GtkWidget *btn_new_con = gtk_button_new_with_label("Network Connection Creation");
      GtkWidget *btn_computerName = gtk_button_new_with_label("Edit Computer Name");
      GtkWidget *btn_linux_network_settings = gtk_button_new_with_label("Linux Network Settings");
      GtkWidget *btn_linux_exit = gtk_button_new_with_label("EXIT");
      gtk_box_pack_start(GTK_BOX(vbox), btn_new_con, FALSE, FALSE, 0);
      gtk_box_pack_start(GTK_BOX(vbox), btn_settings_dialog, FALSE, FALSE, 0);
      gtk_box_pack_start(GTK_BOX(vbox), btn_computerName, FALSE, FALSE, 0);
      gtk_box_pack_start(GTK_BOX(vbox), btn_linux_network_settings, FALSE, FALSE, 0);
      gtk_box_pack_start(GTK_BOX(vbox), btn_linux_exit, FALSE, FALSE, 0);
      gtk_container_add(GTK_CONTAINER(window), vbox);

      // the clicked handler function respectively are: 'on_btn_settings_dialog_clicked', 'on_btn_new_con_clicked', 'on_computerName_clicked', 'on_ntpUpdate_clicked'
      g_signal_connect(btn_settings_dialog, "clicked", G_CALLBACK(on_btn_settings_dialog_clicked), NULL);
      g_signal_connect(btn_new_con, "clicked", G_CALLBACK(on_btn_new_con_clicked), NULL);
      g_signal_connect(btn_computerName, "clicked", G_CALLBACK(on_computerName_clicked), NULL);
      g_signal_connect(btn_linux_network_settings, "clicked", G_CALLBACK(on_networking_clicked), NULL);
      g_signal_connect(btn_linux_exit, "clicked", G_CALLBACK(on_linux_exit_clicked), NULL);
      gtk_widget_show_all(window);
 }} //Extern `

注释掉的所有内容我都尝试过但没有成功。

c++ linux gtk glade
1个回答
0
投票

如果没有可重现的代码,很难说,窗口关闭可以写成

void close_window_on_click(GtkWidget *widget, gpointer data) {
  if (GTK_IS_WINDOW(data)) gtk_window_close(GTK_WINDOW(data));
}
...
g_signal_connect(some_button, "clicked", G_CALLBACK(close_window_on_click), some_window);
© www.soinside.com 2019 - 2024. All rights reserved.