Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104241
  • 博文数量: 112
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1055
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-07 20:50
文章分类

全部博文(112)

文章存档

2010年(77)

2009年(35)

我的朋友

分类: C/C++

2009-12-08 11:03:56

ubuntucodeblocks起步-简单计算器工程

下面是在code::blocks下设计的一个功能简单的计算器。

通过project wizard建立wxWidgest工程。

选择wxWidgets应用工程。

选择wxWidgets 2.8.x选项,点下一步。

为工程起名字jisuanqi,选择工程保存路径,点下一步。

在“please select your favourite GUI Builder to use.”选项卡中选择“wxSmith”和“Dialog Based”选项。建立一个基于对话框的工程。点下一步。


默认选择,点下一步。


在“wxWidgets Library Setting”选项中选择“Use default wxWidgets configuration”,结束。初始有一个默认工程,如下:


直接编译运行,你会看到默认的“Welcome to wxWidgets”对话框。


在这里,我们需要建立自己的对话框工程。选中form中的BoxSizer控件,将其删除,使工程只剩下一个空的form,如下:


在编译器下方选择相应的控件拖入到form中,并修改控件的属性如下:

1、首先选择窗体,修改其Title属性为“计算器”,Width和Height分别为255、310;

2、修改TextCtrl控件属性,Text属性设为空;

3、修改按钮属性,Label属性分别为1、2、3......如下图,Width和Height属性分别为40、32。

调整各控件的属性如下图:


接下来为各个按钮添加响应函数。点击属性面板右上角右边的{ }按钮,进入EVENTS控制面板。选中form中的一个按钮,例如按钮1,点击EVT_BUTTON,在弹出菜单中选择“Add new handler”。为其添加相应函数。


代码设计:

添加四个全局变量 int oper; //保存运算符 wxString oper1; //保存输入的操作数

double a1; //存储第一个操作数 double result; //存储结果

在窗体的构造函数aaaDialog::aaaDialog(wxWindow* parent,wxWindowID id)中进行初始化:

oper=0;

oper1=_T("");

result=0.0;

a1=0.0;

各按钮的相应函数内容如下:

button“1”:

void aaaDialog::OnButton2Click(wxCommandEvent& event)

{

wxString num1=_T("1"); //_T 不同编码环境下的可移植性

TextCtrl1->WriteText(num1) ; //写入TextCtrl

}


button“2”:

void aaaDialog::OnButton3Click(wxCommandEvent& event)

{

wxString num2=_T("2");

TextCtrl1->WriteText(num2) ;

}


button“3”:

void aaaDialog::OnButton4Click(wxCommandEvent& event)

{

wxString num3=_T("3");

TextCtrl1->WriteText(num3) ;

}


button“4”:

void aaaDialog::OnButton5Click(wxCommandEvent& event)

{

wxString num4=_T("4");

TextCtrl1->WriteText(num4) ;

}


button“5”:

void aaaDialog::OnButton6Click(wxCommandEvent& event)

{

wxString num5=_T("5");

TextCtrl1->WriteText(num5) ;

}


button“6”:

void aaaDialog::OnButton7Click(wxCommandEvent& event)

{

wxString num6=_T("6");

TextCtrl1->WriteText(num6) ;

}


button“7”:

void aaaDialog::OnButton8Click(wxCommandEvent& event)

{

wxString num7=_T("7");

TextCtrl1->WriteText(num7) ;

}


button“8”:

void aaaDialog::OnButton9Click(wxCommandEvent& event)

{

wxString num8=_T("8");

TextCtrl1->WriteText(num8) ;

}


button“9”:

void aaaDialog::OnButton10Click(wxCommandEvent& event)

{

wxString num9=_T("9");

TextCtrl1->WriteText(num9) ;

}


button“0”:

void aaaDialog::OnButton11Click(wxCommandEvent& event)

{

wxString num0=_T("0");

TextCtrl1->WriteText(num0) ;

}


button“.”:

void aaaDialog::OnButton12Click(wxCommandEvent& event)

{

wxString nump=_T(".");

TextCtrl1->WriteText(nump) ;

}


button“+”:

void aaaDialog::OnButton1Click1(wxCommandEvent& event)

{

oper1 = TextCtrl1->GetValue(); //获得TextCtrl的内容

oper1.ToDouble(&a1); //wxString转换为double型的

TextCtrl1->Clear(); //清空TextCtrl

oper=0; //0代表+

}


button“-”:

void aaaDialog::OnButton14Click(wxCommandEvent& event)

{

oper1 = TextCtrl1->GetValue();

oper1.ToDouble(&a1);

TextCtrl1->Clear();

oper=1; //1代表-

}


button“x”:

void aaaDialog::OnButton15Click(wxCommandEvent& event)

{

oper1 = TextCtrl1->GetValue();

oper1.ToDouble(&a1);

TextCtrl1->Clear();

oper=2; //2代表*

}


button“/”:

void aaaDialog::OnButton16Click(wxCommandEvent& event)

{

oper1 = TextCtrl1->GetValue();

oper1.ToDouble(&a1);

TextCtrl1->Clear();

oper=3; //3代表/

}


button“=”:

void aaaDialog::OnButton13Click(wxCommandEvent& event)

{

wxString str; //用于保存最终结果的字符串形式

double a2; //第二个操作数

wxString oper2=TextCtrl1->GetValue();

oper2.ToDouble(&a2);

switch(oper){

case 0: result=a1+a2;break;

case 1: result=a1-a2;break;

case 2: result=a1*a2;break;

case 3: result=a1/a2;break;

}

//result

str<

TextCtrl1->Clear();

TextCtrl1->WriteText(str) ; //显示最终结果

}

编译运行,结果如下:



有关函数请参见

阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~