2017-02-16 11 views
0

GTK + 3.0 library.and를 사용하여 C GUI를 사용하고 있습니다. Glade 도구를 사용하고 있는데 Glade에서 GUI를 만든 후 실제로 "c"파일이 GUI에 생성 된 것을 알고 싶습니다.Glade에서 GUI를 만든 후 실제로 "c"파일이 생성되는 것을 알고 싶습니까?

+0

그것은 프로젝트 디렉토리에 소스 코드를 저장합니다. 여기에 언급 된 바와 같이 "http://www.togaware.com/linux/survivor/Build_Source.html" –

+0

프로젝트 디렉토리의 .c 파일 저장 또는 .glade 파일에서? –

+0

.glad 파일은 항상 프로젝트 파일이므로 .c 파일이어야합니다. 도구 메뉴와 일반으로 이동하여 생성 된 코드에 대한 디렉토리 참조를 찾을 수 있는지 확인하십시오. –

답변

2

Glade-3은 컴파일 할 수있는 .c 파일을 생성하지 않습니다. 위젯의 레이아웃과 연결할 신호를 설명하는 XML 파일 인 .glade (.ui)를 생성합니다. 이 파일을 런타임에 프로그램에로드하여 위젯을 작성하십시오. 아주 아주 오래된 버전은 .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; 
} 

해당 습지 파일 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>