首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

GTK+3 入門:創建帶按鈕的簡單視窗程式

     編輯:關於C

GTK+3 是跨平台 GUI 工具包,可在 Linux、Windows 上運行。本文示範最基礎的視窗創建、固定佈局容器、按鈕信號連接與主事件循環。

完整程式碼


#include 

int main(int argc, char *argv[]) {
    GtkWidget *window, *fixed, *button;

    gtk_init(&argc, &argv);

    // 1. 創建頂層視窗
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "你好");
    gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    // 2. 固定佈局容器
    fixed = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed);

    // 3. 創建按鈕並放置座標
    button = gtk_button_new_with_label("退出");
    gtk_fixed_put(GTK_FIXED(fixed), button, 50, 50);
    gtk_widget_set_size_request(button, 80, 35);

    // 4. 信號連接
    g_signal_connect(G_OBJECT(button), "clicked",
                     G_CALLBACK(gtk_main_quit), G_OBJECT(window));
    g_signal_connect_swapped(G_OBJECT(window), "destroy",
                             G_CALLBACK(gtk_main_quit), NULL);

    // 5. 顯示所有元件並進入主循環
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}

關鍵步驟解析

  1. gtk_init():初始化 GTK,解析命令列參數。
  2. gtk_window_new():創建視窗,設定標題、預設尺寸、顯示位置。
  3. GtkFixed:無佈局管理的容器,需手動指定子元件 (x, y) 座標與尺寸。
  4. gtk_button_new_with_label():創建帶文字標籤的按鈕。
  5. g_signal_connect():連接信號
    • 按鈕 "clicked" → gtk_main_quit() 退出主循環。
    • 視窗 "destroy" → gtk_main_quit()(swapped 交換參數順序)。
  6. gtk_widget_show_all() 遞歸顯示視窗及所有子元件。
  7. gtk_main() 進入事件主循環,等待用戶交互。

編譯命令


gcc main.c -o gtk_demo `pkg-config --cflags --libs gtk+-3.0`

運行後彈出 230×150 視窗,居中顯示「退出」按鈕,點擊即關閉程式。

進階提示

  • 實際專案建議使用 GtkBox/GtkGrid 等自適應佈局容器,而非 GtkFixed。
  • 使用 Glade 設計界面,配合 GtkBuilder 動態加載,分離 UI 與邏輯。
  • CSS 樣式化:GtkCssProvider 為元件應用樣式表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved