千家信息网

QT如何实现简单计算器功能

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"QT如何实现简单计算器功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"QT如何实现简单计算器功能"吧!效果图:新建工程,创建类M
千家信息网最后更新 2026年11月02日QT如何实现简单计算器功能

这篇文章主要讲解了"QT如何实现简单计算器功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"QT如何实现简单计算器功能"吧!

效果图:

新建工程,创建类MainWindow,基类是QMainWindow,声明变量和函数、槽

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H #include #include #include  class MainWindow : public QMainWindow{    Q_OBJECTprotected:    int num1,num2,result; //标记第一个数,第二个数和结果    int operat; //运算符号    int operat_flag;//标记是否输入符号    QLineEdit *data;    QPushButton *button_0;    QPushButton *button_1;    QPushButton *button_2;    QPushButton *button_3;    QPushButton *button_4;    QPushButton *button_5;    QPushButton *button_6;    QPushButton *button_7;    QPushButton *button_8;    QPushButton *button_9;    QPushButton *button_ce;    QPushButton *button_jia;    QPushButton *button_jian;    QPushButton *button_cheng;    QPushButton *button_chu;    QPushButton *button_result;    QString s; public:    MainWindow(QWidget *parent = 0);    ~MainWindow(); public:    void myLayout();    void operation();    void readNum(int num);    void init_data();private slots:    void button_0_clicked();    void button_1_clicked();    void button_2_clicked();    void button_3_clicked();    void button_4_clicked();    void button_5_clicked();    void button_6_clicked();    void button_7_clicked();    void button_8_clicked();    void button_9_clicked();    void button_ce_clicked();    void button_result_clicked();    void button_cheng_clicked();    void button_chu_clicked();    void button_jia_clicked();    void button_jian_clicked();}; #endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"#include #include #include  MainWindow::MainWindow(QWidget *parent)    : QMainWindow(parent){} void MainWindow::myLayout(){    QWidget *centerWindow = new QWidget;    this->setCentralWidget(centerWindow);     s = "";    init_data();    data = new QLineEdit("");     button_0 = new QPushButton("0");    button_1 = new QPushButton("1");    button_2 = new QPushButton("2");    button_3 = new QPushButton("3");    button_4 = new QPushButton("4");    button_5 = new QPushButton("5");    button_6 = new QPushButton("6");    button_7 = new QPushButton("7");    button_8 = new QPushButton("8");    button_9 = new QPushButton("9");    button_ce = new QPushButton("CE");    button_jia = new QPushButton("+");    button_jian = new QPushButton("-");    button_cheng = new QPushButton("*");    button_chu = new QPushButton("/");    button_result = new QPushButton("=");     data->setFixedHeight(30);    button_0->setMinimumHeight(50);    button_1->setMinimumHeight(50);    button_2->setMinimumHeight(50);    button_3->setMinimumHeight(50);    button_4->setMinimumHeight(50);    button_5->setMinimumHeight(50);    button_6->setMinimumHeight(50);    button_7->setMinimumHeight(50);    button_8->setMinimumHeight(50);    button_9->setMinimumHeight(50);    button_ce->setMinimumHeight(50);    button_jia->setMinimumHeight(50);    button_jian->setMinimumHeight(50);    button_cheng->setMinimumHeight(50);    button_chu->setMinimumHeight(50);    button_result->setMinimumHeight(50);     //连接信号    connect(button_0,SIGNAL(clicked(bool)),this,SLOT(button_0_clicked()));    connect(button_1,SIGNAL(clicked(bool)),this,SLOT(button_1_clicked()));    connect(button_2,SIGNAL(clicked(bool)),this,SLOT(button_2_clicked()));    connect(button_3,SIGNAL(clicked(bool)),this,SLOT(button_3_clicked()));    connect(button_4,SIGNAL(clicked(bool)),this,SLOT(button_4_clicked()));    connect(button_5,SIGNAL(clicked(bool)),this,SLOT(button_5_clicked()));    connect(button_6,SIGNAL(clicked(bool)),this,SLOT(button_6_clicked()));    connect(button_7,SIGNAL(clicked(bool)),this,SLOT(button_7_clicked()));    connect(button_8,SIGNAL(clicked(bool)),this,SLOT(button_8_clicked()));    connect(button_9,SIGNAL(clicked(bool)),this,SLOT(button_9_clicked()));    connect(button_jia,SIGNAL(clicked(bool)),this,SLOT(button_jia_clicked()));    connect(button_jian,SIGNAL(clicked(bool)),this,SLOT(button_jian_clicked()));    connect(button_cheng,SIGNAL(clicked(bool)),this,SLOT(button_cheng_clicked()));    connect(button_chu,SIGNAL(clicked(bool)),this,SLOT(button_chu_clicked()));    connect(button_ce,SIGNAL(clicked(bool)),this,SLOT(button_ce_clicked()));    connect(button_result,SIGNAL(clicked(bool)),this,SLOT(button_result_clicked()));     QGridLayout * layout = new QGridLayout;     layout->addWidget(data,1,1,1,4,Qt::Alignment());     layout->addWidget(button_1,2,1,Qt::Alignment());    layout->addWidget(button_2,2,2,Qt::Alignment());    layout->addWidget(button_3,2,3,Qt::Alignment());    layout->addWidget(button_jia,2,4,Qt::Alignment());     layout->addWidget(button_4,3,1,Qt::Alignment());    layout->addWidget(button_5,3,2,Qt::Alignment());    layout->addWidget(button_6,3,3,Qt::Alignment());    layout->addWidget(button_jian,3,4,Qt::Alignment());     layout->addWidget(button_7,4,1,Qt::Alignment());    layout->addWidget(button_8,4,2,Qt::Alignment());    layout->addWidget(button_9,4,3,Qt::Alignment());    layout->addWidget(button_cheng,4,4,Qt::Alignment());     layout->addWidget(button_ce,5,1,Qt::Alignment());    layout->addWidget(button_0,5,2,Qt::Alignment());    layout->addWidget(button_result,5,3,Qt::Alignment());    layout->addWidget(button_chu,5,4,Qt::Alignment());    layout->setMargin(12);    centerWindow->setLayout(layout);} MainWindow::~MainWindow(){ } void MainWindow::init_data(){    num1 = 0;    num2 = 0;    operat_flag = 0;} void MainWindow::readNum(int num){      //如果是第一个操作数      if(operat_flag == 0){          num1 = num1 * 10 + num;      }      //如果是第二个操作数      else{          num2 = num2 * 10 + num;      }} void MainWindow::operation(){    switch(operat){    case 1:        result = num1 + num2;        break;    case 2:        result = num1 - num2;        break;    case 3:        result = num1 * num2;        break;    case 4:        result = num1 / num2;        break;    }    //把结果存到num1中,清零num2    num1 = result;    num2 = 0;    s = QString::number(result,10);} void MainWindow::button_0_clicked(){    s += "0";    data->setText(s);    readNum(0);} void MainWindow::button_1_clicked(){    s += "1";    data->setText(s);    readNum(1);} void MainWindow::button_2_clicked(){    s += "2";    data->setText(s);    readNum(2);} void MainWindow::button_3_clicked(){    s += "3";    data->setText(s);    readNum(3);} void MainWindow::button_4_clicked(){    s += "4";    data->setText(s);    readNum(4);} void MainWindow::button_5_clicked(){    s += "5";    data->setText(s);    readNum(5);} void MainWindow::button_6_clicked(){    s += "6";    data->setText(s);    readNum(6);} void MainWindow::button_7_clicked(){    s += "7";    data->setText(s);    readNum(7);} void MainWindow::button_8_clicked(){    s += "8";    data->setText(s);    readNum(8);} void MainWindow::button_9_clicked(){    s += "9";    data->setText(s);    readNum(9);} void MainWindow::button_ce_clicked(){    s = "";    data->setText("");    //初始化数据    init_data();} void MainWindow::button_jia_clicked(){    s += "+";    data->setText(s);    operat_flag = 1;    operat = 1;} void MainWindow::button_jian_clicked(){    s += "-";    data->setText(s);    operat_flag = 1;    operat = 2;} void MainWindow::button_cheng_clicked(){    s += "*";    data->setText(s);    operat_flag = 1;    operat = 3;} void MainWindow::button_chu_clicked(){    s += "/";    data->setText(s);    operat_flag = 1;    operat = 4;} void MainWindow::button_result_clicked(){    operation();    QString a = QString::number(result,10);    data->setText(a);}

main.cpp

#include "mainwindow.h"#include  int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    w.show();    w.setFixedSize(400,300);    w.setWindowTitle("计算器");    w.myLayout();    return a.exec();}

演示:

99*100=

结果

继续计算/99

感谢各位的阅读,以上就是"QT如何实现简单计算器功能"的内容了,经过本文的学习后,相信大家对QT如何实现简单计算器功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

计算器 功能 结果 学习 个数 内容 操作数 标记 符号 信号 函数 变量 就是 工程 思路 情况 效果 效果图 数据 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司华为 亿账通互联网科技 互联网科技logo设计 互联网前沿科技 互联网科技英文翻译 互联网科技股有哪些 互联网科技公司招聘 互联网和高科技公司 互联网科技公司需要的职位 成都互联网科技公司100强 洛阳昕诺飞互联网科技有限公司 华夏恒生互联网科技013171 21世纪互联网科技成就 互联网科技股为什么大涨 互联网与数字科技关系 陕西云淼互联网科技公司 半导体行业属于互联网高科技类吗 广州互联网高科技取餐柜 陕西彩京云互联网科技有限公司 重庆科技产业互联网有哪些 喔噻互联网科技 互联网金融科技创新 科技大学互联网专业好不好 天速互联网络科技有限公司 成都互联网科技公司100强 广州市恰铎互联网科技有限公司 合肥互联网科技公司公章图片 广州梦谷互联网科技有限公司领导 张家口科技产业互联网平台 科技发展第三阶段互联网时代
0