blog新地址 Surprised => indulgence => Calm => Lost => Panic =>Calm

Qt入门-计算器设计

Qt screenpage 1694℃ 0评论

3

Qt计算器设计:

利用Qt Designer设计Ui界面,设计界面如下:
MainWindow
其中包括三个LineEdit,一个comboBox,一个Label,一个pushButton.
前两个LineEdit存放需要运算的值,最后一个LineEdit存放结果。
利用comboBox选择需要进行的运算。
程序设计过程:
在mainwindow.h中,添加槽。为点击计算pushButton后作出反应
private slots:
    void calSlot();
在mainwindow.cpp中添加槽的实现方式:
函数功能实现:void MainWindow::calSlot(){}
在函数体中,取出LineEdit的值。
查看帮助文档,可以得知,LineEdit有text属性
 text
text属性的访问方法,可以有text()方法获取,获取后可以得到一个QString类型数值。
ui->firstLineEdit->text()
但是需要计算的话,需要将其转换成其他如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
翻译为:这个属性保存组合框中的当前项的索引。
访问方法是:
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中设置值为得到的值。
ui-&amp;gt;resultLineEdit-&amp;gt;setText(QString::number(result));
这里用到了setText方法,这是LineEdit的text属性的访问方法之一。
QString::number()方法是QString类的一个静态方法,是QString number(int n, int base = 10),基于10进制,将一个int型数值得到一个QString类型数值。
以上完成了槽中内容的设计,当发生pushButton点击事件的时候,槽就作出相应的反映。
所以现在需要进行,信号与槽的连接:
QObject::connect(ui-&amp;gt;calcButton,SIGNAL(clicked(bool)),this,SLOT(calSlot()));
connect是QObject中的一个静态成员。
其中ui->calcButton是信号的发出者,发出的信号为clicked,接受者是本程序,接收的操作是执行calSlot()槽中的内容。
关于Qt信号与槽的介绍,可以参考以下博文:
Qt入门之信号与槽

转载请注明:Imekaku-Blog » Qt入门-计算器设计

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址