как использовать xml-файл glade для создания исполняемой программы

Я учусь использовать glade 3 для создания графического интерфейса.

Тем не менее,*.glade — это xml-файл. Я не уверен, как идти дальше отсюда. Поиск Google не очень помогает. Есть вопрос, уже заданный для той же вещи ЗДЕСЬ Инструмент для преобразования .Glade (или xml) файл в источник C . Однако я действительно не в состоянии понять ответ, данный в этом.

Может ли кто-то сказать основной поток цикла разработки с помощью glade 3?

  1. Дизайн пользовательского интерфейса в glade.
  2. Сгенерируйте *.glade xml файл.
  3. И ЧТО ПОТОМ ?

Как xml-файл может быть преобразован в исполняемый файл ?

О. должен ли я преобразовать этот xml-файл в язык (C) и скомпилировать код C ?

B. или существует способ прямого преобразования xml-кода в исполняемый файл ELF ?

Я пытаюсь сделать графический интерфейс для моего собственного использования. Я использую linux и хочу исполняемый файл ELF (например, как я получил бы, если бы я написал код C с помощью библиотеки gtk и скомпилировал его с помощью gcc).

2 ответа

  1. Если мы посмотрим на страницу Википедии для Glade, там есть целый раздел о том, как использовать Glade в программе: с GtkBuilder. Теперь все, что осталось, это прочитать документы, и вы можете начать использовать Glade. Без обид, но я никогда не использовал Glade раньше, и это довольно ясно во всех документах. Например, вот домашняя страница Glade .

  2. Я бы сделал что-то вроде этого:

    DerivedWindow::DerivedWindow()
    {
      mainBox = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL, 7));
      builder = Gtk::Builder::create();
      try {
        builder->add_from_file("filename.glade");
      } catch (Glib::Error& ex) {
        errMsg("Window Builder Failed: " + ex.what());
      }
    
      Gtk::Box* box;
      builder->get_widget("name of box inside main window", box);
      if (!box) { this->destroy_(); return; }
    
      box->unparent();
      mainBox->pack_start(*box, Gtk::PACK_SHRINK);
    
      //optional - if you want full access to particular widgets
      builder->get_widget("name of widged id", widgetname);
    
      //connect signals here...
    
      add(*mainBox);
      show_all();
    }
    

    Обратите внимание, что это Gtkmm 3+.

    Важно, чтобы вы сняли поле, которое вы получили из файла glade, чтобы вы могли прикрепить его к производному окну.