IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Qt+VS开发入门:利用Qt VS Tools实现简易计算器,附源码 -> 正文阅读

[C++知识库]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));
    }
}

? ? ? ? 以上。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:17:51  更:2021-10-13 11:18:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:47:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码