Depectered gtk_vbox_new альтернативы - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу создать строку меню с одним меню «Файл» с пунктом меню «Выход» для завершения приложения. Я использую GTK+ version: 3.24.5. С этим кодом:

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {

  GtkWidget *window;
  GtkWidget *vbox;

  GtkWidget *menubar;
  GtkWidget *fileMenu;
  GtkWidget *fileMi;
  GtkWidget *quitMi;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
  gtk_window_set_title(GTK_WINDOW(window), "Simple menu");

  vbox = gtk_vbox_new(FALSE, 0);
  gtk_container_add(GTK_CONTAINER(window), vbox);

  menubar = gtk_menu_bar_new();
  fileMenu = gtk_menu_new();

  fileMi = gtk_menu_item_new_with_label("File");
  quitMi = gtk_menu_item_new_with_label("Quit");

  gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileMi), fileMenu);
  gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quitMi);
  gtk_menu_shell_append(GTK_MENU_SHELL(menubar), fileMi);
  gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);

  g_signal_connect(G_OBJECT(window), "destroy",
        G_CALLBACK(gtk_main_quit), NULL);

  g_signal_connect(G_OBJECT(quitMi), "activate",
        G_CALLBACK(gtk_main_quit), NULL);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

Я получаю 'gtk_vbox_new' устарела: вместо этого используйте 'gtk_box_new' [-Wdeprecated-декларации] . Я читаю здесь https://developer.gnome.org/gtk3/stable/GtkVBox.html, что

gtk_vbox_new устарела с версии 3.2 и не должна использоваться во вновь создаваемом коде. Вместо этого вы можете использовать gtk_box_new () с GTK_ORIENTATION_VERTICAL, что является быстрым и простым изменением. Но рекомендуется переключиться на GtkGrid, поскольку GtkBox в конце концов уйдет. См. Миграция из других контейнеров в GtkGrid.

Но я не знаком с GtkGrid, можете ли вы показать мне, как мне переписать код?

...