分类: C/C++
2009-12-08 11:03:56
ubuntu下codeblocks起步-简单计算器工程
下面是在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) ; //显示最终结果
}
编译运行,结果如下:
有关函数请参见