我想知道在Glade中生成实际上“c”文件生成的GUI后?

问题描述:

我正在使用GTK + 3.0 library.and我使用工具Glade我想使用工具Glade在Glade中生成实际上“C”文件为该GUI生成的GUI后。我想知道在Glade中生成实际上“c”文件生成的GUI后?

+0

它节省了源代码到项目目录。如此处所述“http://www.togaware.com/linux/survivor/Build_Source.html” –

+0

在项目目录中.c文件保存还是.glade文件? –

+0

它应该是.c文件,因为.glad文件始终是项目文件。进入你的工具菜单和一般,看看你能否找到你生成的代码的目录引用。 –

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; 
} 

其对应的格莱德文件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>