【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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值