• An Introduction to C & GUI Programming -----Simon Long 学习笔记 2


    书直接讲到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 参考

    https://developer.gnome.org/gtk3/stable/GtkWindow.html

  • 相关阅读:
    BZOJ1264 [AHOI2006]基因匹配Match 动态规划 树状数组
    BZOJ1845 [Cqoi2005] 三角形面积并 扫描线 计算几何
    BZOJ1258 [CQOI2007]三角形tri 模拟
    BZOJ4972 八月月赛 Problem B 小Q的方格纸 二维前缀和
    BZOJ1218 [HNOI2003]激光炸弹 二维前缀和
    BZOJ1263 [SCOI2006]整数划分 高精度
    BZOJ1209 [HNOI2004]最佳包裹 三维凸包 计算几何
    BZOJ1207 [HNOI2004]打鼹鼠 动态规划
    BZOJ1202 [HNOI2005]狡猾的商人 spfa
    BZOJ1201 [HNOI2005]数三角形 大力出奇迹
  • 原文地址:https://www.cnblogs.com/goodluck14/p/13234898.html
Copyright © 2020-2023  润新知