Qt计算器设计:
利用Qt Designer设计Ui界面,设计界面如下:
其中包括三个LineEdit,一个comboBox,一个Label,一个pushButton.
前两个LineEdit存放需要运算的值,最后一个LineEdit存放结果。
利用comboBox选择需要进行的运算。
程序设计过程:
在mainwindow.h中,添加槽。为点击计算pushButton后作出反应
private slots: void calSlot();
在mainwindow.cpp中添加槽的实现方式:
函数功能实现:void MainWindow::calSlot(){}
在函数体中,取出LineEdit的值。
查看帮助文档,可以得知,LineEdit有text属性
查看帮助文档,可以得知,LineEdit有text属性
text属性的访问方法,可以有text()方法获取,获取后可以得到一个QString类型数值。
ui->firstLineEdit->text()
但是需要计算的话,需要将其转换成其他如Int等可运算的数值类型。
QString有toInt方法,可以将QString类型的数值,转换成int类型,并且返回一个Int类型数值。
所以定义:
QString有toInt方法,可以将QString类型的数值,转换成int类型,并且返回一个Int类型数值。
所以定义:
int first=ui->firstLineEdit->text().toInt();
获取到LineEdit中的数值,并将其转换成Int型,放在first中。
同理可将second放在另一个整型数值中。
之后,需要得知选择的是何种运算方式,这个从comboBox得知:
comboxBox有currentIndex属性,翻译为:当前索引。
在Qt帮助文档有:This property holds the index of the current item in the combobox
翻译为:这个属性保存组合框中的当前项的索引。
comboxBox有currentIndex属性,翻译为:当前索引。
在Qt帮助文档有:This property holds the index of the current item in the combobox
翻译为:这个属性保存组合框中的当前项的索引。
访问方法是:
int currentIndex() const
所以需要获取这个运算符就用:
ui->comboBox->currentIndex()
索引从0开始,如果再Ui界面添加的第一项是加法,那么当ui->comboBox->currentIndex()==0是,就表示当前使用者希望进行的是加法运算。以此类推。
这里可以用if语句,进行相应的选择运算:
if(ui->comboBox->currentIndex()==0) { result=first+second; } if(second==0) { QMessageBox::warning(this,"Title","您输入的除数不能为0"); return; }
这里用到了QMessageBox,在使用的时候弹出消息提示框。需要添加<QMessageBox>头文件。
查看帮助文档,可以得知,这里用到warning方法是QMessageBox的静态成员,所以不需要先定义对象。
得到所有运算的result的值之后,在结果LineEdit中设置值为得到的值。
查看帮助文档,可以得知,这里用到warning方法是QMessageBox的静态成员,所以不需要先定义对象。
得到所有运算的result的值之后,在结果LineEdit中设置值为得到的值。
ui-&gt;resultLineEdit-&gt;setText(QString::number(result));
这里用到了setText方法,这是LineEdit的text属性的访问方法之一。
QString::number()方法是QString类的一个静态方法,是QString number(int n, int base = 10),基于10进制,将一个int型数值得到一个QString类型数值。
QString::number()方法是QString类的一个静态方法,是QString number(int n, int base = 10),基于10进制,将一个int型数值得到一个QString类型数值。
以上完成了槽中内容的设计,当发生pushButton点击事件的时候,槽就作出相应的反映。
所以现在需要进行,信号与槽的连接:
所以现在需要进行,信号与槽的连接:
QObject::connect(ui-&gt;calcButton,SIGNAL(clicked(bool)),this,SLOT(calSlot()));
connect是QObject中的一个静态成员。
其中ui->calcButton是信号的发出者,发出的信号为clicked,接受者是本程序,接收的操作是执行calSlot()槽中的内容。
其中ui->calcButton是信号的发出者,发出的信号为clicked,接受者是本程序,接收的操作是执行calSlot()槽中的内容。
关于Qt信号与槽的介绍,可以参考以下博文: