QT 制作简易计算器
1 下载安装QT
安装QT,首先这是qt下载链接,可以通过迅雷下载,速度会快一些
QT下载路径
本教程以的 Qt5.12.9 版本进行开发及实验说明。
https://www.qt.io/
去这个路径注册账号。安装的过程需要登录。
在Ubuntu终端输入
chmod +x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run
进行安装软件,安装组件选择如下图
2 如何新建工程
3 QT制作简易计算器
1.布局计算器界面lineEdit、PushButton
2.改对应对象的名字
3.步骤过程
3.1±*/=C转到槽函数
3.2添加头文件#include <QButtonGroup>
3.3定义按钮组对象、字符串、判断变量
定义按钮组对象: QButtonGroup group;(先声明一个QButtonGroup类的对象)
定义字符串一:QString num1;
定义字符串二:QString num2;
定义加减乘除判断变量初始化为零:int calcs=0;
QButtonGroup group;
QString num1;
QString num2;
int calcs=0;
3.4在槽函数中判断按键的值
calcs=1;
calcs=2;
calcs=3;
calcs=4;
3.5添加按钮到按钮组addButton(按钮对象,id);
group.addButton(ui->B0,0);
group.addButton(ui->B1,1);
group.addButton(ui->B2,2);
group.addButton(ui->B3,3);
group.addButton(ui->B4,4);
group.addButton(ui->B5,5);
group.addButton(ui->B6,6);
group.addButton(ui->B7,7);
group.addButton(ui->B8,8);
group.addButton(ui->B9,9);
添加按钮到按钮组:按钮组:同时操作多个按钮
addButton(QAbstractButton *button(按钮对象), int id =-1(按钮编号))
group.在初始化或者构造函数里面给这个指针对象分配空间然后就可以用addButton ()函数把想要放置的按键添加进去.
这样就能把想要的按键与它所对应的ID号对应起来了,每一次点击按键时QButtonGroup都会发射信号buttonClicked (int lD),通过判断ID的槽与其连接,就可以实现按键的判断了。
3.6关联信号与槽
connect(&group,SIGNAL(buttonClicked(int)),this,SLOT(Get_num(int)));
3.7写get_num()函数,并声明一下
void MainWindow::Get_num(int num)
{
if(calcs==0)
{
num1.append(QString::number(num));
ui->lineEdit->setText(num1);
}
else
{
num2.append(QString::number(num));
ui->lineEdit->setText(num2);
}
}
3.8写入到等于号的槽函数
QString result;
switch(calcs)//选取加减乘除等式之一,
{
case 1: result=QString(num1+"+"+num2+"="+QString::number(num1.toInt()+num2.toInt()));break;
case 2: result=QString(num1+"-"+num2+"="+QString::number(num1.toInt()-num2.toInt()));break;
case 3: result=QString(num1+"*"+num2+"="+QString::number(num1.toInt()*num2.toInt()));break;
case 4: result=QString(num1+"/"+num2+"="+QString::number(num1.toInt()/num2.toInt()));break;
default: break;
}
ui->lineEdit->setText(result);//显示结果等式
calcs =0;//重新置零
num1.clear();//清除字符串的内容并使其为空。
num2.clear();//清除字符串的内容并使其为空。
3.9写入到清除的槽函数
ui->lineEdit->clear();
num1.clear();//清除字符串的内容并使其为空。
num2.clear();//清除字符串的内容并使其为空。
4.汇总代码
4.1 mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
group.addButton(ui->B0,0);
group.addButton(ui->B1,1);
group.addButton(ui->B2,2);
group.addButton(ui->B3,3);
group.addButton(ui->B4,4);
group.addButton(ui->B5,5);
group.addButton(ui->B6,6);
group.addButton(ui->B7,7);
group.addButton(ui->B8,8);
group.addButton(ui->B9,9);
connect(&group,SIGNAL(buttonClicked(int)),this,SLOT(Get_num(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_BPLUS_clicked()
{
calcs=1;
}
void MainWindow::on_BSUB_clicked()
{
calcs=2;
}
void MainWindow::on_BMUL_clicked()
{
calcs=3;
}
void MainWindow::on_BDIV_clicked()
{
calcs=4;
}
void MainWindow::Get_num(int num)
{
if(calcs==0)
{
num1.append(QString::number(num));
ui->lineEdit->setText(num1);
}
else
{
num2.append(QString::number(num));
ui->lineEdit->setText(num2);
}
}
void MainWindow::on_BEQU_clicked()
{
QString result;
switch(calcs)//选取加减乘除等式之一,
{
case 1: result=QString(num1+"+"+num2+"="+QString::number(num1.toInt()+num2.toInt()));break;
case 2: result=QString(num1+"-"+num2+"="+QString::number(num1.toInt()-num2.toInt()));break;
case 3: result=QString(num1+"*"+num2+"="+QString::number(num1.toInt()*num2.toInt()));break;
case 4: result=QString(num1+"/"+num2+"="+QString::number(num1.toInt()/num2.toInt()));break;
default: break;
}
ui->lineEdit->setText(result);//显示结果等式
calcs =0;//重新置零
num1.clear();//清除字符串的内容并使其为空。
num2.clear();//清除字符串的内容并使其为空。
}
void MainWindow::on_BC_clicked()
{
ui->lineEdit->clear();
num1.clear();//清除字符串的内容并使其为空。
num2.clear();//清除字符串的内容并使其为空。
}
4.2 mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QButtonGroup>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_BPLUS_clicked();
void on_BSUB_clicked();
void on_BMUL_clicked();
void on_BDIV_clicked();
void on_BEQU_clicked();
void on_BC_clicked();
void Get_num(int num);
private:
Ui::MainWindow *ui;
QButtonGroup group;
QString num1;
QString num2;
int calcs=0;
};
#endif // MAINWINDOW_H