用qt做计算器,基于qt的计算器设计

  用qt做计算器,基于qt的计算器设计

  开源代码库演示:Qt计算器的实现

  思路类ButtonNum:公共q按钮

  {

  q _对象

  公共:

  ButtonNum(int I);

  (同Internationalorganizations)国际组织索引;

  专用插槽:

  void单击按钮();

  信号:

  void发送号(int number);

  };上面的代码说明了我们大概的想法:

  1、定义一个数字按钮类:ButtonNum,它的作用就是提供按钮上的数字给处理计算的类w计算器。

  2、为了能使按钮数量类能发出它上面的数字,我们自定义一个信号:sendNumber(int),那么w计算器只要观察这个信号,就可以收到按键上的数字。

  3、发出这个信号的时机就在按键被点击时,为此,我们自定义一个槽函数来连接到按键的点击事件,然后在槽函数中发出这个信号。

  具体代码如下:

  ButtonNum:ButtonNum(int I):q button(QString:number(I)),index(i){

  connect(this,SIGNAL(clicked(bool))、this,SLOT(click button());

  };//将自定义槽函数与按键的点击信号连接起来

  void ButtonNum:clickButton(){

  发出发送号码(索引);//发出信号

  }在w计算器处理计算的过程,我们是这样想的:

  类w计算器:公共对话框

  {

  q _对象

  公共:

  WCalculator(q widget * parent=nullptr);

  ~ w计算器();

  button num * button _ num[10];//10 个数字

  //控制按键

  QPushButton * button _ plus//按键

  q button * button _ MINUS//按键-

  q button * button _ multiply//按键*

  q button * button _ devide//按键/

  q button * button _ equal//按键=

  QPushButton * button _ clear _ all//清除按键c

  QLineEdit * lineEdit//显示框

  float num1,num2,result//临时变量,在计算过程中使用

  QString S;//用于组装显示内容

  茶符号;//用于识别控制按键,以此进行相应的操作

  (同Internationalorganizations)国际组织标记;

  void on _ button _ plus _ clicked();//控制按键对应的槽函数

  //控制按键对应的槽函数

  专用插槽:

  void on _ button _ MINUS _ clicked();

  void on _ button _ multiply _ clicked();

  void on _ button _ devide _ clicked();

  void on _ button _ equal _ clicked();

  void on _ button _ clear _ all _ clicked();

  void接收号(int I);

  };放在专用插槽下的槽函数与简单的放在公众的下的槽函数,在连接的写法上有些区别,举个例子吧:

  专用插槽形式的:

  connect(button_minus,SIGNAL(clicked(bool))、this、SLOT(on _ button _ MINUS _ clicked());公众的下的槽函数:

  connect(button_minus,QPushButton:clicked,this,WCalculator:on _ button _ MINUS _ clicked);这个计算器的实现不是全面的,它只能支持形如:2 2=4 这种形式的一次计算,下次计算就得按清除键重置,然后依次按数字-运算符-数字-等于号。这个例子旨在使用一些信号与槽函数的概念。

  w计算器的实现代码:

  #包含栅格布局

  #包含调试器

  #include wcalculator.h

  #包含 ./ui_wcalculator.h

  WCalculator:WCalculator(q widget * parent)

  :QDialog(父)

  {

  num1=0.0

  num2=0.0

  结果=0.0;

  s=

  符号=-1;

  mark=1;

  line edit=new QLineEdit( C );

  QGridLayout * Grid=new QGridLayout;

  Grid- addWidget(lineEdit,1,0,1,4,Qt:Alignment());

  for(int I=0;i 10i ){

  button _ num[I]=new ButtonNum(I);

  }

  q按钮*按钮[6];

  button _ plus=新q按钮();

  button _ MINUS=新q按钮(-);

  button _ multiply=新q按钮( * );

  button _ devide=new q button(/);

  button _ equal=新q按钮(=);

  button _ clear _ all=新q按钮( c );

  button[0]=button _ plus;

  button[1]=button _ MINUS;

  button[2]=button _ multiply;

  button[3]=button _ devide;

  button[4]=button _ equal;

  button[5]=button _ clear _ all;

  for(int I=1;i5;i ){

  for(int j=0;j 4;j ){

  int num _ arr _ index=(I-1)* 4j;

  qDebug()(I-1)* 4j Qt:endl;

  if(num_arr_index 10){

  grid-add widget((q push button *)button _ num[num _ arr _ index],i 1,j,Qt:Alignment());

  connect(button _ num[num _ arr _ index],SIGNAL(sendNumber(int)),this,SLOT(receive number(int)));

  }否则{

  grid-add widget(button[num _ arr _ index-10],i 1,j,Qt:Alignment());

  }

  }

  }

  this- setLayout(网格);

  connect(button_plus,QPushButton:clicked,this,WCalculator:on _ button _ plus _ clicked);

  connect(button_minus,SIGNAL(clicked(bool))、this、SLOT(on _ button _ MINUS _ clicked());

  connect(button_multiply,SIGNAL(clicked(bool))、this、SLOT(on _ button _ multiply _ clicked());

  connect(button_devide,SIGNAL(clicked(bool))、this、SLOT(on _ button _ devide _ clicked());

  connect(button_equal,SIGNAL(clicked(bool))、this、SLOT(on _ button _ equal _ clicked());

  connect(button_clear_all,SIGNAL(clicked(bool))、this、SLOT(on _ button _ clear _ all _ clicked());

  }

  void w计算器:接收数(整数){

  S=QString:number(数字);

  line edit-setText;

  if(mark==1){

  数字1=数字1 * 10个数;

  }否则{

  数字2=数字2 * 10个数;

  }

  }

  void w计算器:on _ button _ plus _ clicked(){

  s=

  符号="";

  mark=2;

  line edit-setText;

  }

  void w计算器:on _ button _ MINUS _ clicked(){

  s=-;

  符号=-;

  mark=2;

  line edit-setText;

  }

  void w计算器:on _ button _ multiply _ clicked(){

  s=" *

  符号= *

  mark=2;

  line edit-setText;

  }

  void w calculator:on _ button _ devide _ clicked(){

  s=/;

  sign=/;

  mark=2;

  line edit-setText;

  }

  void w计算器:on _ button _ equal _ clicked(){

  S==

  开关(标志){

  案例"":

  结果=num1 num2

  打破;

  大小写-:

  结果=num 1-num 2;

  打破;

  大小写 * :

  结果=数量1 *数量2

  打破;

  案例"/":

  结果=数字1/数字2;

  打破;

  默认值:

  打破;

  }

  S=QString(%1 ).参数(结果);

  line edit-setText;

  }

  void w calculator:on _ button _ clear _ all _ clicked(){

  num1=0.0

  num2=0.0

  结果=0.0;

  符号=-1;

  mark=1;

  s=

  line edit-setText;

  }

  WCalculator:~WCalculator()

  {

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: