作者共發了5篇帖子。 內容轉換:不轉換▼
 
點擊 回復
436 4
【程序】创建带有一个按钮的窗口,并向控制台输出文字
一派護法 十九級
1樓 發表于:2016-8-25 16:08
【window.c】
#include <gtk/gtk.h>

int number = 0;
GtkWidget *window;

void print_hello(GtkWidget *widget, gpointer data)
{
    int *p = (int *)data; // gpointer = void *
    g_print("Hello World! n=%d\n", *p);
    if (*p == 5)
        gtk_widget_destroy(window);
    else
        (*p)++;
}

void activate(GtkApplication *app, gpointer user_data)
{
    GtkWidget *button, *button_box;
   
    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Window");
    gtk_window_set_default_size(GTK_WINDOW(window), 640, 480);
   
    button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
    gtk_container_add(GTK_CONTAINER(window), button_box);
   
    button = gtk_button_new_with_label("Hello World");
    g_signal_connect(button, "clicked", G_CALLBACK(print_hello), &number);
    //g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), window);
    gtk_container_add(GTK_CONTAINER(button_box), button);
   
    gtk_widget_show_all(window);
}

int main(int argc, char **argv)
{
    GtkApplication *app;
    int status;
   
    app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);
    return status;
}
一派護法 十九級
2樓 發表于:2016-8-25 16:09
【Makefile】
window: window.c
    gcc `pkg-config --cflags gtk+-3.0` window.c -o window `pkg-config --libs gtk+-3.0`
一派護法 十九級
3樓 發表于:2016-8-25 16:10
在Fedora24下编译只需要事先安装gtk3-devel:
$ sudo dnf install gtk3-devel
一派護法 十九級
4樓 發表于:2016-8-25 16:12
【程序控制台输出】
$ ./window
Hello World! n=0
Hello World! n=1
Hello World! n=2
Hello World! n=3
Hello World! n=4
Hello World! n=5
【本文参考资料】
https://developer.gnome.org/gtk3/stable/gtk-getting-started.html
一派護法 十九級
5樓 發表于:2016-8-25 16:20
【窗口截图】

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:436 回複數:4
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-8-25 16:20
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。