2017-02-16 2 views
0

Я работаю с C графическим интерфейсом, используя GTK + 3.0 library.and я использую инструмент Glade. Я хочу знать, что после создания графического интерфейса в Glade, где фактически создается «c» файл для этого графического интерфейса.Я хочу знать, что после создания графического интерфейса в Glade, где создается «c» файл?

+0

Он сохраняет исходный код в директории проекта. Как упоминалось здесь «http://www.togaware.com/linux/survivor/Build_Source.html» –

+0

В каталоге проекта .c файл save или .glade файл? –

+0

Это должен быть файл .c, потому что файл .glad всегда является файлом проекта. зайдите в свое меню инструментов и общее и посмотрите, можете ли вы найти ссылки на каталоги сгенерированного кода. –

ответ

2

Glade-3 не создает файл .c, который может быть скомпилирован. Он генерирует .glade (.ui), который представляет собой XML-файл, описывающий макет виджетов и какие сигналы для подключения. Вы загружаете этот файл во время выполнения в свою программу для создания виджетов. Очень старые версии действительно генерировали файлы .c, но это было давно.

Большинство функций, которые необходимо использовать в приложении для использования файла Glade, основаны на GtkBuilder и функциях, начинающихся с gtk_builder _ *(). Документация по API составляет https://developer.gnome.org/gtk3/stable/GtkBuilder.html.

Пример программы test.c: -

#include <gtk/gtk.h> 

#define UI_FILE "test.ui" 
#define WIDGET_WINDOW "a_window" 

/* Callback for the buttons */ 
void on_button_clicked (GtkButton* button, 
         gpointer user_data) 
{ 
    gtk_main_quit(); 
} 

int main(int argc, char *argv[]) 
{ 
    GtkWidget *window; 
    GtkBuilder *builder; 

    /* Initialize gtk+*/ 
    gtk_init (&argc, &argv); 

    builder = gtk_builder_new(); 
    gtk_builder_add_from_file (builder, UI_FILE, NULL); 

    window = GTK_WIDGET (gtk_builder_get_object (builder, WIDGET_WINDOW)); 
    gtk_builder_connect_signals (builder, NULL); 

    gtk_widget_show (window); 

    gtk_main(); 
    return 0; 
} 

Ее соответствующий Glade файл test.ui

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.20.0 --> 
<interface> 
    <requires lib="gtk+" version="3.20"/> 
    <object class="GtkWindow" id="a_window"> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkBox"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <property name="orientation">vertical</property> 
     <child> 
      <object class="GtkLabel"> 
      <property name="visible">True</property> 
      <property name="can_focus">False</property> 
      <property name="vexpand">True</property> 
      <property name="label" translatable="yes">label</property> 
      </object> 
      <packing> 
      <property name="expand">False</property> 
      <property name="fill">True</property> 
      <property name="position">0</property> 
      </packing> 
     </child> 
     <child> 
      <object class="GtkButton"> 
      <property name="label" translatable="yes">Close</property> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      <property name="receives_default">True</property> 
      <signal name="clicked" handler="on_button_clicked" swapped="no"/> 
      </object> 
      <packing> 
      <property name="expand">False</property> 
      <property name="fill">True</property> 
      <property name="position">1</property> 
      </packing> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 
Смежные вопросы