zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    下载文件c#
    系统蓝屏重起:如何修改设置,记录系统蓝屏重起的错误
    Repeater中的行数
    2010617 重装系统遇到的问题
    ajax 修改select的值 返回的值中有逗号
    GPS数据接收 串口调试感受
    Nios II实用之音频控制
    【笔记】VB控件MSComm功能介绍
    【摘】程序员版同桌的你
    AJAX Control Toolkit ——DragPanelExtender(拖拽面板)
  • 原文地址:https://www.cnblogs.com/goodluck14/p/13234898.html
Copyright © 2011-2022 走看看