我想知道在Glade中生成实际上“c”文件生成的GUI后?
问题描述:
我正在使用GTK + 3.0 library.and我使用工具Glade我想使用工具Glade在Glade中生成实际上“C”文件为该GUI生成的GUI后。我想知道在Glade中生成实际上“c”文件生成的GUI后?
答
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>
它节省了源代码到项目目录。如此处所述“http://www.togaware.com/linux/survivor/Build_Source.html” –
在项目目录中.c文件保存还是.glade文件? –
它应该是.c文件,因为.glad文件始终是项目文件。进入你的工具菜单和一般,看看你能否找到你生成的代码的目录引用。 –