zoukankan      html  css  js  c++  java
  • gtk+学习笔记(三)

    gtk感觉函数好多,需要记好多函数,还是多练习,多总结,今天写了一个登陆窗口,很简单,主要是为了加深对这些东西的记忆,直接贴代码

      1 #include<gtk/gtk.h>
      2 static GtkWidget* entry1;
      3 static GtkWidget* entry2;
      4 void succes()
      5 {
      6     GtkWidget* dialog;                    
      7     GtkWidget* label;
      8     GtkWidget* button;
      9     GtkWidget* vbox;
     10     GtkWidget* hbox;
     11     dialog = gtk_dialog_new();        
     12 /*新建一个dialog对话框,GtkDialog提供了两个成员,分别是vbox跟action_area(活动域),这两个区域之间有一条分隔线;活动域其实是一个水平的盒子,分隔线可以通过函数gtk_dialog_set_has_separator()人为的显示或隐藏。*/
     13 
     14     g_signal_connect(G_OBJECT(dialog),"destroy",G_CALLBACK(gtk_main_quit),NULL);    //相应关闭按钮的事件
     15         
     16     vbox=GTK_DIALOG(dialog)->vbox;        
     17     label=gtk_label_new("登陆成功");        //创建一个标签
     18     gtk_box_pack_start(GTK_BOX(vbox),label,TRUE,TRUE,30);        //将标签放到对话框的vbox中
     19     
     20     hbox=GTK_DIALOG(dialog)->action_area;
     21     button = gtk_button_new_with_label("确定");    //创建一个带标签的按钮
     22     gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0);        //将按钮放到对话框的活动域
     23 
     24     
     25     g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(gtk_main_quit),NULL);        //相应按钮点击的事件
     26     
     27     gtk_widget_show_all(dialog);                //显示对话框
     28 
     29 
     30 }
     31 void on_button_clicked (GtkWidget* button,gpointer data)            //相应父窗口点击按钮的事件
     32 {
     33     const gchar *username = gtk_entry_get_text(GTK_ENTRY(entry1));
     34     const gchar *password = gtk_entry_get_text(GTK_ENTRY(entry2));
     35     g_print("用户名是:%s
    ",username);
     36     g_print("密码是:%s
    ",password);
     37 
     38 }
     39 int main(int argc,char *argv[])
     40 {
     41     GtkWidget* window;
     42     GtkWidget* box;
     43     GtkWidget* box1;
     44     GtkWidget* box2;
     45     GtkWidget* label1;
     46     GtkWidget* label2;
     47     GtkWidget* button;
     48     GtkWidget* sep;
     49     gtk_init(&argc,&argv);                    //初始化gtk+环境
     50 
     51     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);        //新建一个一个窗口,类型为最上层
     52 
     53     g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);        //响应点击窗口关闭按钮的事件
     54 
     55     gtk_window_set_title(GTK_WINDOW(window),"登陆窗口");            //设置窗口标题
     56     gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);        //设置窗口出现的位置
     57     gtk_window_set_default_size(GTK_WINDOW(window),500,100);        //设置窗口大小
     58 
     59     gtk_container_set_border_width(GTK_CONTAINER(window),50);        //设置窗口容器离窗口边框的距离
     60 
     61     box=gtk_vbox_new(TRUE,5);                        //创建一个垂直排列的容器
     62     gtk_container_add(GTK_CONTAINER(window),box);                //将容器加入窗口
     63 
     64     box1=gtk_hbox_new(TRUE,5);                        //创建一个水平排列的容器
     65     gtk_box_pack_start(GTK_BOX(box),box1,FALSE,FALSE,5);            //将其加入box中
     66 
     67     box2=gtk_hbox_new(TRUE,5);                        
     68     gtk_box_pack_start(GTK_BOX(box),box2,FALSE,FALSE,5);
     69 
     70     sep = gtk_hseparator_new();                        
     71     /*创建一个分隔条,实际上分割线也是一种特殊形式的按扭,gtk_hseparator_new用来创建一个水平分割条,gtk_vseparator创建一个垂直分割线*/
     72 
     73     gtk_box_pack_start(GTK_BOX(box),sep,FALSE,FALSE,5);            //将分割线加入box中
     74 
     75     label1 = gtk_label_new("用户名:");                    //创建文字标签
     76     entry1 =gtk_entry_new();                        //创建录入构件
     77 
     78     gtk_box_pack_start(GTK_BOX(box1),label1,TRUE,FALSE,5);            
     79     gtk_box_pack_start(GTK_BOX(box1),entry1,TRUE,FALSE,5);
     80 
     81     label2 =gtk_label_new("密码:");
     82     entry2 = gtk_entry_new();                        
     83 
     84     gtk_entry_set_visibility(GTK_ENTRY(entry2),FALSE);            //第二个参数为FALSE时,屏蔽输入框中的内容为黑点
     85 
     86     gtk_box_pack_start(GTK_BOX(box2),label2,TRUE,FALSE,5);
     87     gtk_box_pack_start(GTK_BOX(box2),entry2,TRUE,FALSE,5);
     88 
     89     button = gtk_button_new_with_label("确认");                        //添加一个带标签的按钮
     90     g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),NULL);    //相应按钮点击的事件
     91 
     92     g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(succes),NULL);            //响应按钮点击的事件
     93 
     94     gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,5);            //将按钮加入box中
     95 
     96     gtk_widget_show_all(window);                        //显示全部window中全部内容
     97 
     98     gtk_main();                                //主函数循环
     99 
    100     return FALSE;
    101 }

    gtk函数多,参数多,一定要多练习多使用。

  • 相关阅读:
    【leetcode】525. Contiguous Array
    【leetcode】827. Making A Large Island
    【leetcode】540. Single Element in a Sorted Array
    【leetcode】45. Jump Game II
    2017.11.2 Talk to customers for an hour
    New Concept English three (29)
    New Concept English three (28)
    2017.10.31 Enginer+position+statement
    New Concept English three (27)
    2017.10.30 Epicor -ERP
  • 原文地址:https://www.cnblogs.com/kingos/p/4541158.html
Copyright © 2011-2022 走看看