在 header 文件或实现中包含 GTK
Include GTK in header file or implementation
我的 header 声明了 GtkWidget 指针。
// header file
GtkWidget *equalButton;
GtkWidget *pointButton;
GtkWidget *modeButton;
并且实现 (.c) 文件将使用 GtkBuilder 将它们绑定到林间空地 objects。
我应该把#include<gtk/gtk.h>
放在哪里才能使代码合理?
我建议您执行以下操作(这里我以 Hello World 类项目为例):
头文件 (components.h)
#include <gtk/gtk.h>
// declarations
extern GtkWidget *label_hello;
extern void on_btn_hello_clicked();
extern void on_window_main_destroy();
C文件 (components.c)
#include "components.h"
// definition
GtkWidget *label_hello;
void on_btn_hello_clicked()
{
...
gtk_label_set_text(GTK_LABEL(label_hello), "Hello, world!");
...
}
void on_window_main_destroy()
{
gtk_main_quit();
}
主文件 (main.c)
#include "components.h"
int main(int argc, char *argv[])
{
...
GtkBuilder *builder;
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "glade/window_main.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
...
label_hello = GTK_WIDGET(gtk_builder_get_object(builder, "lbl_hello"));
...
}
注意:构建器可以在 .c 文件的函数中初始化,然后指针可以在代码的不同函数之间传递。这在很大程度上取决于您希望如何构建代码。在上面的示例中,构建器位于 main.c 文件中,但可以轻松将其移动到 components.c 文件中。例如,您可以这样做:
GtkBuilder *get_builder_instance(){
GtkBuilder * builder = malloc(sizeof(GtkBuilder));
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "glade/window_main.glade", NULL);
return builder;
}
我的 header 声明了 GtkWidget 指针。
// header file
GtkWidget *equalButton;
GtkWidget *pointButton;
GtkWidget *modeButton;
并且实现 (.c) 文件将使用 GtkBuilder 将它们绑定到林间空地 objects。
我应该把#include<gtk/gtk.h>
放在哪里才能使代码合理?
我建议您执行以下操作(这里我以 Hello World 类项目为例):
头文件 (components.h)
#include <gtk/gtk.h>
// declarations
extern GtkWidget *label_hello;
extern void on_btn_hello_clicked();
extern void on_window_main_destroy();
C文件 (components.c)
#include "components.h"
// definition
GtkWidget *label_hello;
void on_btn_hello_clicked()
{
...
gtk_label_set_text(GTK_LABEL(label_hello), "Hello, world!");
...
}
void on_window_main_destroy()
{
gtk_main_quit();
}
主文件 (main.c)
#include "components.h"
int main(int argc, char *argv[])
{
...
GtkBuilder *builder;
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "glade/window_main.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
...
label_hello = GTK_WIDGET(gtk_builder_get_object(builder, "lbl_hello"));
...
}
注意:构建器可以在 .c 文件的函数中初始化,然后指针可以在代码的不同函数之间传递。这在很大程度上取决于您希望如何构建代码。在上面的示例中,构建器位于 main.c 文件中,但可以轻松将其移动到 components.c 文件中。例如,您可以这样做:
GtkBuilder *get_builder_instance(){
GtkBuilder * builder = malloc(sizeof(GtkBuilder));
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "glade/window_main.glade", NULL);
return builder;
}