Glade实现计算器

本文介绍了如何利用Glade界面设计器来创建一个简单的计算器应用程序,通过解析内容中的`jsq.c`和`makefile`,我们可以推断这是关于C语言编程和构建过程的。
摘要由CSDN通过智能技术生成

jsq.c

#include <gtk/gtk.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
//#define BUFSIZE 1024  //定义临时字符串长度

#define w_(builder,type,name) name=GTK_##type(gtk_builder_get_object(builder,#name))

double num1;
double num2;//分别代表两个数

int flag;   //1表示加法,2表示减法,3表示乘法,4表示除法
int fflag = 0;  //0表示整数,1表示小数

//-------------- 载入glade文件,返回GtkBuilder对象----------------

GtkBuilder* gtk_load_glade(gchar* filename)
{
    GtkBuilder *gb;
    //新建一个GtkBuilder对象
    gb=gtk_builder_new();
    //载入文件,失败则返回NULL
    if(!gtk_builder_add_from_file(gb,filename,NULL))            
        return NULL;
    //连接文件中所包含的所有信号
    gtk_builder_connect_signals(gb,NULL);
    //返回GtkBuilder对象供后面操作使用 
    return gb;
}

//----- 根据GtkBuilder对象,获得glade中对应的计算器中的控件------
GtkWindow *jsq_window;
GtkEntry *show_entry;
GtkButton *button_add;
GtkButton *button_equal;
GtkButton *button_dot;
GtkButton *button_jian;
GtkButton *button_cheng;
GtkButton *button_chu;
GtkButton *button0;
GtkButton *button1;
GtkButton *button2;
GtkButton *button3;
GtkButton *button4;
GtkButton *button5;
GtkButton *button6;
GtkButton *button7;
GtkButton *button8;
GtkButton *button9;
GtkButton *button0;
GtkButton *button_c;

void cal_get_widgets(GtkBuilder* gb)
{
    w_(gb,WINDOW,jsq_window);   
    w_(gb,ENTRY,show_entry);
    w_(gb,BUTTON,button_add);
    w_(gb,BUTTON,button_equal);
        w_(gb,BUTTON,button_dot);
        w_(gb,BUTTON,button_jian);
        w_(gb,BUTTON,button_cheng);
        w_(gb,BUTTON,button_chu);
        w_(gb,BUTTON,button0);
        w_(gb,BUTTON,button1);
        w_(gb,BUTTON,button2);
        w_(gb,BUTTON,button3);
        w_(gb,BUTTON,button4);
        w_(gb,BUTTON,button5);
        w_(gb,BUTTON,button6); 
        w_(gb,BUTTON,button7);
        w_(gb,BUTTON,button8);
        w_(gb,BUTTON,button9);
        w_(gb,BUTTON,button0);     
        w_(gb,BUTTON,button_c);     
}

//判断Entry内是否有数字
int HaveNum()
{
       const gchar* keywords = gtk_entry_get_text(show_entry);
       char* message;
       message = (char*)malloc(1024*sizeof(char));
       sprintf(message, "%s", keywords);
       if(strlen(message) == 0)//之前没有数字
       {
          free(message);
           return -1;//如果返回-1,则代表Entry内没有数字
       }
       free(message);
       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值