Qt+VS开发入门:利用Qt VS Tools实现简易计算器,附源码

        先说环境:VS2019 + Qt 5.15.1;

        由于工作原因近期要用Qt+VS环境做二次开发,之前是用python较多,因此先拿这个练手熟悉下开发环境,亲测一步一步能跑通;

一、在VS中创建Qt工程

1、VS2019:新建项目-选最下面Qt Widgets Application-输入项目名和路径-下一步;(查到的教程是Qt GUI Application,可能由于版本原因没这个选项,不深究)

        2、一路next到这步,选QMainWindow和QWidget都行,要是将来需要菜单栏等组件的话选mainwindow;

        勾选了一个Lower,这样生成的.h和.cpp文件名是小写,看个人;

         3、创建完成,如下;直接运行可以产生一个空白的QWidget窗口;

 二、UI界面设计

1、双击前面图中的calculator.ui文件,弹出Qt Designer。

       按住PushButton 和LineEdit拖到右边的设计区域,就添加成功了,多次添加;

2、选中某个添加完成的QPushbutton,可以在右边的属性栏修改组件名文本内容;完成后效果如下;

       3、信号和槽函数串联

       点击1,然后按住一个按键往边上一拖点击一下;

         出现此窗口,点右边的编辑;

         点加号,自己定义槽函数的名称,然后OK;

         回到这个界面,两边选中后点ok就完成了这个按键的槽函数关联;

        重复此操作,完成所有按键的槽函数关联,这里一共定义了4个,

                on_clear_btn_clicked(), on_num_btn_clicked()

                on_flag_btn_clicked(),  on_action_btn_equal_clicked()

        定义完成后可在Qt Designer右下角快速查看,此步骤完成,保存返回;

 三、主要槽函数功能实现

1、在calculator.h中对数字、符号、清除、等号的槽函数作声明;

 2、在calculator.cpp中完成相应的功能实现,如图所示;

四、调试

       测试,成功运行;

 完整代码:

1、calculator.h

#pragma once

#include <QtWidgets/QWidget>
#include "ui_calculator.h"

class calculator : public QWidget
{
    Q_OBJECT

public:
    calculator(QWidget *parent = Q_NULLPTR);

private slots:
    void on_num_btn_clicked();//数字按键槽函数声明
    void on_flag_btn_clicked();//符号按键槽函数声明
    void on_action_btn_equal_clicked();//等号按键槽函数声明
    void on_clear_btn_clicked();//清除按键槽函数声明

private:
    Ui::calculatorClass ui;
};

 2、calculator.cpp

#include "calculator.h"

calculator::calculator(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    setWindowTitle(QStringLiteral("计算器"));//起个名,计算器
}
//清除按键槽函数
void calculator::on_clear_btn_clicked() {
    ui.lineEdit->setText("");
}

//数字按键槽函数
void calculator::on_num_btn_clicked() {
    QPushButton* btn = qobject_cast<QPushButton*>(sender());//得到当前操作的按键
    QString number = btn->text();//获取按键上文本的值
    ui.lineEdit->insert(number);
}
//符号按键槽函数
void calculator::on_flag_btn_clicked() {
    QPushButton* btn = qobject_cast<QPushButton*>(sender());//得到当前操作的按键
    QString flag = btn->text();//获取按键上文本的值
    ui.lineEdit->insert(flag);
}

//等号按键槽函数
void calculator::on_action_btn_equal_clicked() {
    QString result;
    result = ui.lineEdit->text();
    if (result.isEmpty()) {
        return;
    }
    //加法
    if (result.indexOf("+") != -1) {
        double i;
        i = result.indexOf("+");//获取加号位置
        double h;
        h = result.leftRef(i).toDouble();//获取加号左边的值
        double j;
        j = result.rightRef(result.size() - i).toDouble();//获取加号右边的值
        double k;
        k = h + j;
        ui.lineEdit->setText(QString::number(k));//运算结果显示到LineEdit中
    }
    //减法
    if (result.indexOf("-") != -1) {
        double i;
        i = result.indexOf("-");
        double h, j, k;
        h = result.leftRef(i).toDouble();
        ++i;
        j = result.rightRef(result.size() - i).toDouble();
        k = h - j;
        ui.lineEdit->setText(QString::number(k));
    }
    //乘法
    if (result.indexOf("*") != -1) {
        double i, h, j, k;
        i = result.indexOf("*");
        h = result.leftRef(i).toDouble();
        ++i;
        j = result.rightRef(result.size() - i).toDouble();
        k = h * j;
        ui.lineEdit->setText(QString::number(k));
    }
    //除法
    if (result.indexOf("/") != -1) {
        double i, h, j, k;
        i = result.indexOf("/");
        h = result.leftRef(i).toDouble();
        ++i;
        j = result.rightRef(result.size() - i).toDouble();
        k = h / j;
        ui.lineEdit->setText(QString::number(k));
    }
}

        以上。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值