GTK+-3.0编程 (二) 为创建的窗口添加一个按钮
http://www.cnblogs.com/rain-blog/p/gtk3-2.html
仅仅创建一个空白窗口是不够的,下面我们为创建的窗口添加一个按钮。
以 Hello,World!为例。
首先创建一个源文件:example2.c 内容如下。
#include <gtk/gtk.h>
//点击按钮后被调用的函数,用于输出hello,world
static void print_msg (GtkWidget *button , gpointer data)
{
printf("Hello , world!\n");
}
static void activate (GtkApplication *app , gpointer data)
{
GtkWidget *win;
//申明一个按钮
GtkWidget *button;
//申明一个盒容器,用于容纳按钮,控制大小
GtkWidget *button_box;
win = gtk_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(win) , "Button test");
gtk_window_set_default_size(GTK_WINDOW(win) , 200 , 200);
//创建一个盒容器,并设置水平放置
button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); //gtk_orientation_horizontal
//将盒容器包含进window中
gtk_container_add(GTK_CONTAINER(win) , button_box);
//创建一个按钮,并带有“My button” 的标签
button = gtk_button_new_with_label("My button");
//连接信号,让点击按钮后,便调用 print_msg 函数
g_signal_connect(button , "clicked" , G_CALLBACK( print_msg ) , NULL);
//将按钮放入盒容器中
gtk_container_add(GTK_CONTAINER(button_box) , button);
//显示window及其所有控件
gtk_widget_show_all(win);
}
int main(int argc , char **argv)
{
GtkApplication *app;
int app_status;
app = gtk_application_new("org.gtk.exmple" , G_APPLICATION_FLAGS_NONE);
g_signal_connect(app , "activate" , G_CALLBACK(activate) , NULL);
app_status = g_application_run(G_APPLICATION(app) , argc , argv);
g_object_unref(app);
return app_status;
}
编译,运行结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通