书直接讲到button了,我觉得不行,先不管其它功能,窗口肯定有标题和大小,这都不讲说不过去。
窗口设置标题
#include <gtk/gtk.h> int main (int argc, char *argv[]) { gtk_init (&argc, &argv); GtkWidget *win1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkWidget *win2 = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* 初学者表示很疑惑 gtk_window_new生成一个窗口但是返回值它是GtkWidget类型的 然后gtk_window_set_title 需要GtkWindow类型参数*/ gtk_window_set_title (GTK_WINDOW(win1), "QT is better than GTK"); gtk_window_set_title (GTK_WINDOW(win2), "GTK is better than QT"); gtk_widget_show (win1); gtk_widget_show (win2); gtk_main (); return 0; }
编译 gcc `pkg-config --cflags gtk+-3.0` test.c -o hello `pkg-config --libs gtk+-3.0`
结果
标题都被挡住了,必须要设置下窗口大小
#include <gtk/gtk.h> void gtk_window_set_default_size (GtkWindow *window, gint width, gint height); int main (int argc, char *argv[]) { gtk_init (&argc, &argv); GtkWidget *win1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkWidget *win2 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(win1), "QT is better than GTK"); gtk_window_set_title (GTK_WINDOW(win2), "GTK is better than QT"); gtk_window_set_default_size(GTK_WINDOW(win1), 1920, 1080); gtk_window_set_default_size(GTK_WINDOW(win2), 240, 120); gtk_widget_show (win1); gtk_widget_show (win2); gtk_main (); return 0; }
结果
电脑分辨率是1920x1080的,再写大了没什么用,还是占用一个屏幕
关闭右上角最大化和“x”按钮选项
#include <gtk/gtk.h> void end_program(GtkWidget *wid, gpointer ptr) { gtk_main_quit(); } int main (int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *login = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(login), "欢迎!"); gtk_window_set_default_size(GTK_WINDOW(login), 720, 360); gtk_window_set_position(GTK_WINDOW(login),GTK_WIN_POS_CENTER); // 居中显示 gtk_window_set_resizable(GTK_WINDOW(login), FALSE); // 关闭最大化按钮(不能调整大小了,等于关闭最大化按钮了) gtk_window_set_deletable(GTK_WINDOW(login), FALSE); // 关闭“x”按钮 g_signal_connect(login, "delete_event", G_CALLBACK(end_program), NULL); // 窗口点击X会触发delete_event信号 gtk_widget_show(login); gtk_main(); return 0; }
API 参考