Qt_多元素控件

news2024/9/21 4:00:44

目录

1、认识多元素控件 

2、QListWidget

2.1 使用QListWidget

3、QTableWidget

3.1 使用QListWidget

4、QTreeWidget

4.1 使用QTreeWidget

5、QGroupBox

5.1 使用QGroupBox

6、QTabWidget 

6.1 使用QTabWidget

结语 


前言:

        在Qt中,控件之间若是以复合的形式存在界面上,称之为多元素控件。相反,控件之间若是以彼此的形式存在界面上,称之为单元素控件,换句话说,多元素控件中可以存放其他控件。相比于单元素控件,多元素控件提供了丰富的界面显示以提高用户的体验度,还拓宽了开发者对复杂界面设计的范围,可以让界面提供更多的功能,让代码更具封装性。

1、认识多元素控件 

        Qt中提供的多元素控件有:1、QListWidget QListView,2、QTableWidget QTableView,3、QTreeWidget QTreeView,分别对应列表控件、表格控件、树型控件。可以发现每种类型的控件有两个:后缀一个是Widget,一个是View,就拿QTableWidget和QTableView来说,他们的潜在区别是:

· 使用QTableView时需要创建⼀个Model对象,往QTableView里添加控件实际上是往Model中添加控件,只不过也可以在QTableView中显示出添加的内容。

· 而使用QTableWidget则不需要创建Model对象就可以往QTableWidge添加控件,因为QTableWidgetQTableView的子类,系统已经在QTableWidget中帮我们封装了Model,所以我们直接用即可。

        因此本文主要介绍后缀为Widge的多元素控件

2、QListWidget

        QListWidget是一个纵向列表控件,他的逻辑和下拉框QComboBox有点像,都具有选中功能。只不过QListWidget里面保存的是QListWidgetItem类型(是一个控件),而QComboBox里保存只是QString类型。QListWidget控件示意图如下:

         QListWidget重要属性介绍如下:

currentRow
当前被选中的是第⼏⾏
count
⼀共有多少⾏
sortingEnabled
是否允许排序
isWrapping
是否允许换⾏
itemAlignment
条目的对⻬⽅式
selectRectVisible
被选中的元素矩形是否可⻅
spacing
条目之间的间隔

         QListWidget常用的接口如下:

addItem(const QString& label)
addItem(QListWidgetItem * item)
给列表中添加条目,可以是QString的方式也可以是QListWidgetItem 的方式
currentItem()
返回 QListWidgetItem* 表⽰当前选中的条目
currentRow()返回row,表示获取当前行
setCurrentItem(QListWidgetItem* item)
选中条目为item的条目
setCurrentRow(int row)
选中第row行的条目
insertItem(const QString& label, int row)
insertItem(QListWidgetItem * item, int row)
在指定的行数插⼊对应条目
item(int row)
拿到第row行的条目
takeItem(int row)
删除指定⾏的条目

        由于QListWidget的条目是QListWidgetItem控件,作为一个控件,QListWidgetIte自身也提供了相关接口,如下:

setFont
设置字体
setIcon
设置图标
setHidden
设置隐藏
setSizeHint
设置尺⼨
setSelected
设置是否选中
setText
设置文本
setTextAlignment
设置文本对齐方式

        QListWidget的核心信号如下:

currentItemChanged(QListWidgetItem* current, QListWidgetItem* old)
选中不同条目时会触发,参数是当前选中的条目和之前选中的条目
currentRowChanged(int)
选中不同元素时会触发,参数是当前选中元素的⾏数
itemClicked(QListWidgetItem* item)
点击某个元素时触发
itemDoubleClicked(QListWidgetItem* item)
双击某个元素时触发
itemEntered(QListWidgetItem* item)
⿏标进⼊元素时触发

2.1 使用QListWidget

        实现一个可以通过按钮的方式从而对QListWidget进行条目的增加和删除。界面设计如下:

        在widget.cpp文件下写出代码,代码如下: 

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    QString tmp = ui->lineEdit->text();//获取到输入框中的文本
    if(tmp!="")//若不为空则进行添加
    {
        //用QListWidgetItem的方式进行添加,用QString也可以添加
        QListWidgetItem* q = new QListWidgetItem(tmp);
        ui->listWidget->addItem(q);
        ui->lineEdit->setText("");
    }
}

void Widget::on_pushButton_2_clicked()
{
    int row = ui->listWidget->currentRow();//获取当前行
    ui->listWidget->takeItem(row);//删除row行的条目
}

        测试添加:

        测试删除:

3、QTableWidget

         QTableWidget表示表格控件,因此他可以有若干行和若干列,表格中的每个单元格就是一个QTableWidgetItem(控件)对象,可以通过ui文件双击QTableWidget控件快速的生成一个框架,效果图如下:

        QTableWidget重要属性介绍:

rowCount表格行数
columCount表格列数
horizontalHeaderVisible
是否显示列的属性信息
verticalHeaderVisible
是否显示行的属性信息

         QTableWidget常用接口:

item(int row, int column)
根据⾏数列数获取指定的 QTableWidgetItem*
setItem(int row, int column, QTableWidgetItem*)
根据⾏数列数设置表格中的元素
currentItem()
返回当前选中的元素 QTableWidgetItem*
currentRow()
返回当前选中的元素的行数
currentColumn()
返回当前选中的元素的列数
row(QTableWidgetItem* )
获取指定 item 是第几行
column(QTableWidgetItem* )
获取指定 item 是第⼏列
rowCount()
获取⾏数
columnCount()
获取列数
insertColumn(int column)
在第 column 列插⼊新列
insertRow(int row)
在第 row ⾏处插⼊新⾏
removeRow(int row)
删除第 row ⾏
removeColumn(int column)
删除第 column 列
setHorizontalHeaderItem(int
column, QTableWidgetItem*)
设置指定列的表头
setVerticalHeaderItem(int row,
QTableWidgetItem*)
设置指定⾏的表头

        和QListWidget一样,QTableWidget里的控件QTableWidgetItem也提供了对应的接口,这些接口和QListWidget基本一致,所以不再一一介绍了。


        QTableWidget核心信号:

cellClicked(int row, int column)
点击单元格时触发
cellDoubleClicked(int row, int column)
双击单元格时触发
cellEntered(int row, int column)
⿏标进⼊单元格时触发
currentCellChanged(int row, int
column, int previousRow, int previousColumn)
选中不同单元格时触发

3.1 使用QListWidget

         在界面上创建一个QListWidget,再创建四个按钮和一个输入框,四个按钮分别是:新增一行、新增一列、删除选中行、删除选中列。可以通过按钮对QListWidget表格进行修改,而输入框里的文本就会作为新增一列的表头。界面设计如下:

        代码实现:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->lineEdit->setPlaceholderText("请输入新增列的表头");
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_addcolumn_clicked()//添加列
{
    int column = ui->tableWidget->columnCount();
    ui->tableWidget->insertColumn(column);
    QString tmp = ui->lineEdit->text();
    if(tmp!="")
    {
        ui->tableWidget->setHorizontalHeaderItem(column,new QTableWidgetItem(tmp));
    }
}

void Widget::on_pushButton_addrow_clicked()//添加行
{
    int row = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(row);
}

void Widget::on_pushButton_delcolumn_clicked()//删除列
{
    int column = ui->tableWidget->currentColumn();
    ui->tableWidget->removeColumn(column);
}

void Widget::on_pushButton_delrow_clicked()//删除行
{
    int row = ui->tableWidget->currentRow();
    ui->tableWidget->removeRow(row);
}

        运行结果(部分测试截图):

4、QTreeWidget

         QTreeWidget是树型控件,里面的每一个元素是QTreeWidgetItem,和上述两个多元素控件不同的是,树型控件里的QTreeWidgetItem可以继续嵌套QTreeWidgetItem,就如同将QTreeWidgetItem看成结点,该结点下可以有多个子结点。QTreeWidget效果图如下:

        上图中的1是该树的第二层结点,并不是根结点,我们只能从根结点的下一层结点开始设计,可以在ui文件中添加多个与1同级的结点,概念图如下:

        一般将1所在层级的下一层级的结点叫做顶层结点


         QTreeWidget常用接口(以整个控件的视角来看):

clear
清空所有⼦节点
addTopLevelItem(QTreeWidgetItem* item)
新增顶层节点
topLevelItem(int index)
获取指定下标的顶层节点
topLevelItemCount()
获取顶层节点个数
indexOfTopLevelItem(QTreeWidgetItem* item)
查询指定节点是顶层节点中的下标
takeTopLevelItem(int index)
删除指定的顶层节点,返回 QTreeWidgetItem* 表示被删除的元素
currentItem()
获取到当前选中的节点, 返回 QTreeWidgetItem*
setCurrentItem(QTreeWidgetItem* item)
选中指定节点
setExpanded(bool)
展开/关闭节点
setHeaderLabel(const QString& text)
设置 TreeWidget 的 header 名称

        QTreeWidget核心信号:

currentItemChanged(QTreeWidgetItem*
current, QTreeWidgetItem* old)
切换选中元素时触发
itemClicked(QTreeWidgetItem* item, int col)
点击元素时触发
itemDoubleClicked(QTreeWidgetItem* item, int col)
双击元素时触发
itemEntered(QTreeWidgetItem* item, int col)
⿏标进⼊时触发
itemExpanded(QTreeWidgetItem* item)
元素被展开时触发
itemCollapsend(QTreeWidgetItem* item)
元素被折叠时触发

        QTreeWidgetItem常用接口(以结点的视角来看):

addChild(QTreeWidgetItem* child)
新增⼦结点
childCount()
⼦结点的个数
child(int index)
获取指定下标的⼦结点. 返回 QTreeWidgetItem*
takeChild(int index)
删除对应下标的⼦结点
removeChild(QTreeWidgetItem* child)
删除对应的⼦结点
parent()
获取该元素的⽗结点

4.1 使用QTreeWidget

        创建一个QTreeWidget和三个按钮以及一个输入框,三个按钮分别是:添加到顶层元素、添加到选中元素、删除选中元素。输入框中的文本作为元素的名称。界面设计如下:

        代码实现:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->lineEdit->setPlaceholderText("请输入元素名称");
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()//添加到顶层元素
{
    QString tmp = ui->lineEdit->text();
    if(tmp!="")
    {
        QTreeWidgetItem* q = new QTreeWidgetItem();
        q->setText(0,tmp);
        ui->treeWidget->addTopLevelItem(q);
    }
}

void Widget::on_pushButton_2_clicked()//添加到选中元素
{
    QString tmp = ui->lineEdit->text();
    QTreeWidgetItem* cur = ui->treeWidget->currentItem();
    if(cur&&tmp!="")//要判断当前是否有选中,没有选中则不进行添加
    {
        QTreeWidgetItem* q = new QTreeWidgetItem();
        q->setText(0,tmp);
        cur->addChild(q);
        cur->setExpanded(true);//添加完成后自动展开
    }
}

void Widget::on_pushButton_3_clicked()//删除选中元素
{
    QTreeWidgetItem* del = ui->treeWidget->currentItem();
    if(del)
    {
        QTreeWidgetItem* parent = del->parent();
        if(parent==nullptr)//要删除的结点为顶层结点,那么交给treeWidget处理
        {
            int index = ui->treeWidget->indexOfTopLevelItem(del);
            ui->treeWidget->takeTopLevelItem(index);
        }
        else//要删除的结点为子结点,那么交给parent处理即可
        {
            parent->removeChild(del);
        }
    }
}

        运行结果(部分截图):

5、QGroupBox

        QGroupBox并不是一个真正意义上的多元素控件,他是一个带有标题的分组框,框内可以收纳多个控件,因此他属于容器类控件,不过他的逻辑和多元素控件相似,即控件内可以存放其他控件。QGroupBox的目的就是让控件分组更加明显,QGroupBox效果图如下:

        此时框中控件的父元素不再是this指针,而是QGroupBox

        QGroupBox核心属性:

title
分组框的标题
alignment
分组框内部内容的对⻬⽅式
flat
是否是 "扁平" 模式
checkable
是否可选择,设为 true,则在 title 前⽅会多出⼀个可勾选的部分
checked
描述分组框的选择状态 (前提是 checkable 为 true)

5.1 使用QGroupBox

         QGroupBox的使用相对简单,仅仅只是美化界面的作用,比如将界面上的功能进行模块化,例子如下:

        代码实现:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //汉堡框
    ui->comboBox->addItem("香辣鸡腿堡");
    ui->comboBox->addItem("新奥尔良鸡腿堡");

    //饮料框
    ui->comboBox_2->addItem("可乐");
    ui->comboBox_2->addItem("雪碧");
}

Widget::~Widget()
{
    delete ui;
}

        运行结果:

6、QTabWidget 

        QTabWidget是一个带标签页的容器类控件,他和QGroupBox一样,也可以收纳多个控件并达到分组的效果,不过QTabWidget是以切换标签页来进行分组的,每个标签页就如同一个小窗口。其效果图如下:


         QTabWidget属性介绍:

tabPosition
标签⻚所在的位置-上方、下方、左边、右边
currentIndex
当前选中了第⼏个标签⻚ (从 0 开始计算)
currentTabText
当前选中的标签⻚的⽂本(文本给用户看的)
currentTabName
当前选中的标签⻚的名字(名字给程序看的)
currentTabIcon
当前选中的标签⻚的图标
currentTabToolTip
当前选中的标签⻚的提示信息
tabsCloseable
标签⻚是否可以关闭
movable
标签⻚是否可以移动

         QTabWidget常用接口:

count()
获取到标签⻚的个数
addTab(QWidget*,const QString&)
新增标签⻚,所谓标签页实际上就是QWidget控件
removeTab
删除标签⻚
currentIndex
获取到当前标签⻚的下标
setCurrentIndex
切换当前标签⻚

        QTabWidget核心信号:

currentChanged(int)
在标签⻚发⽣切换时触发,参数为被点击的选项卡编号
tabBarClicked(int)
在点击选项卡的标签条的时候触发,参数为被点击的选项卡编号
tabBarDoubleClicked(int)
在双击选项卡的标签条的时候触发,参数为被点击的选项卡编号
tabCloseRequest(int)
在标签⻚关闭时触发. 参数为被关闭的选项卡编号

6.1 使用QTabWidget

        创建一个QTabWidget和两个按钮,分别是:新增标签页、删除当前页。通过这两个按钮来控制QTabWidget的标签页,并且创建一个标签页后自动给该页设置文本, 以及在该页中创建一个label标签。界面设计如下:

        代码实现: 

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    int cnt = ui->tabWidget->count();
    QWidget* qw = new QWidget(this);
    ui->tabWidget->addTab(qw,"标签页"+QString::number(cnt+1));

    //给当前标签添加label控件
    QLabel* ql = new QLabel(qw);//注意这里挂的是qw而不是this指针
    ql->setText("标签页"+QString::number(cnt+1));
    ql->move(50,50);

    //新增完成后,自动切换到新增的标签页上
    ui->tabWidget->setCurrentWidget(qw);
}

void Widget::on_pushButton_2_clicked()
{
    int index = ui->tabWidget->currentIndex();
    ui->tabWidget->removeTab(index);
}

        运行结果:

结语 

        以上就是关于多元素控件的讲解,多元素控件的表现形式更为丰富,他的核心主要在于外部框架的使用以及对内部控件的理解,这也使得多元素控件的各种接口繁多,要区分哪些接口是作用于外部框架的,而哪些接口是作用于内部控件的,对于属性也是如此。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】常见指令(3)

1.head指令 head指令用于显示文件的前几行内容&#xff0c;默认head指令打印其相应文件的开头10行。 使用方法&#xff1a;head [选项] [文件名] 常见的选项有&#xff1a; -n&#xff1a;指定显示文件的前几行&#xff0c;例如显示前五行可以输入命令“head -n 5 output.txt”…

ChromaDB教程_2024最新版(上)

前言 在上一篇&#xff08;快捷入口&#xff09;文章中&#xff0c;博主提到了一个向量存储&#xff0c;其中用到了Chroma数据库。代码示例如下&#xff1a; vectordb Chroma.from_documents(documentsdocs,embeddingembedding,persist_directoryvector_dir )这是基于langc…

智能车镜头组入门(一)车模的选择

这篇文章&#xff0c;我会简单的介绍下车模的、轮胎和负压的选择 今年的镜头组是自制车模&#xff0c;这比较考验学校之前参赛的经验。我们选择了某飞的mini车模。提供智能车方案的无非就两家&#xff0c;某飞和某邱&#xff0c;我们学校之前都用的是某飞的&#xff0c;在某飞…

功能测试干了2年,快要废了...

8年前刚进入到IT行业&#xff0c;到现在学习软件测试的人越来越多&#xff0c;所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷&#xff0c;越来越多的转行和大学生进入测试行业&#xff0c;导致软件测试已经饱和了&#xff0c;想要获得更好的待…

14 款全新「史诗级」可穿戴装备即将面世,附上获取教程!

14 个新的可穿戴装备原理图火热出炉&#xff0c;随时可供锻造 &#x1f525; 2024 年 7 月&#xff0c;AavegotchiDAO 举办了一次社区设计竞赛&#xff0c;才华横溢的艺术家们施展了他们的设计技能&#xff0c;创造出了 14 个新的可穿戴装备原理图。 现在&#xff0c;这些独一…

spring-boot-maven-plugin插件打包和java -jar命令执行原理

文章目录 1. Maven生命周期2. jar包结构2.1 不可执jar包结构2.2 可执行jar包结构 3. spring-boot-maven-plugin插件打包4. 执行jar原理 1. Maven生命周期 Maven的生命周期有三种&#xff1a; clean&#xff1a;清除项目构建数据&#xff0c;较为简单&#xff0c;不深入探讨&a…

【隐私计算篇】不经意传输协议(OT/OTE)的进一步补充

1. 背景介绍 关于不经意传输(OT)和不经意传输扩展(OT Extension), 我们在之前的文章《OT&OT扩展(不经意传输扩展)深入浅出》做了详细的说明。但对于OT/OTE的一些技术或者概念&#xff0c;还有一定的内容欠缺&#xff0c;因此本文根据冯登国院士关于安全多方计算协议…

实用测评!7种方式将PDF导出为图片,pdf转jpg一键转换!

pdf怎么转换成jpg&#xff1f;pdf是一种通用的便携文件格式之一&#xff0c;而jpg是一种广泛使用的图像格式&#xff0c;平时处理这两种格式文件时&#xff0c;难免会遇到需要将pdf转成jpg格式的情况&#xff0c;例如在学术研究、创意设计、报告提交等领域。 pdf转jpg是一个很常…

GEO数据库提取疾病样本和正常样本|GEO数据库区分疾病和正常样本|直接用|生物信息|生信

GEO数据库提取疾病样本和正常样本|GEO数据库区分疾病和正常样本|直接用|生物信息|生信 代码都可以直接用&#xff0c;修改GSE就可以&#xff01; 通过代码查看数据的分类&#xff0c;是疾病还是正常样本 ##############################查看对饮GSE样本疾病or正常信息# 指定…

[mysql]mysql排序和分页

#排序和分页本身是两块内容,因为都比较简单,我们就把它分到通一个内容里. #1排序: SELECT * FROM employees #我们会发现,我们没有做排序操作,但是最后出来的107条结果还是会按顺序发出,而且是每次都一样.这我们就有一个疑惑了,现在我们的数据库是根据什么来排序的,在我们没有进…

Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】

目录 Linux权限理解1.Xshell命令以及运行原理2.linux权限的学习2.1linux权限的切换2.2linux权限的概念2.3linux权限管理2.3.1linux中文件访问者的分类2.3.2文件类型和访问权限(文件属性)2.3.2.1文件类型2.3.2.2文件权限拓展—文件的起始权限 2.3.3文件权限管理2.3.4文件权限的应…

Linux环境基础开发工具---vim

1.快速的介绍一下vim vim是一款多模式的编辑器&#xff0c;里面有很多子命令&#xff0c;来实现代码编写操作。 2.vim的模式 vim一共有三种模式&#xff1a;底行模式&#xff0c;命令模式&#xff0c;插入模式。 2.1vim模式之间的切换 2.2 谈论常见的模式---命令模式&#xf…

GEC6818初次连接使用

目录 1.开发板资源接口​编辑​编辑 2.安装 SecureCRT工具 2.1SecureCRT相关问题 3.连接开发板 4.开发板文件传输 4.1串口传输 rx 从电脑下载文件到开发板 sz 从开发板把文件发送到电脑 4.2U盘/SD卡传输 4.3网络传输[重点] 5.运行传到开发板的可执行文件 6.开发板网络…

硬件工程师笔试面试——滤波器

目录 12、滤波器 12.1 基础 滤波器原理图 滤波器实物图 12.1.1 概念 12.1.2 滤波器的分类 12.1.3 滤波器的工作原理 12.1.4 滤波器的应用 12.1.5 滤波器设计的关键参数 12.2 相关问题 12.2.1 不同类型的滤波器在实际应用中的具体作用是什么? 12.2.2 如何设计一个简…

Nodejs+vue+Express游戏分享网站的设计与实现 7a2s2

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式&#xff0c;开发软件有很多种可以用&#xff0c;本次开发用到的软件是vscode&#xff0c;用到的数据库是…

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来&#xff0c;之后就是将broker启动起来&#xff0c;broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic&#xff0c;因为发消息的逻辑和收消…

kubernetes架构

kubernetes cluster由master和node组成&#xff0c;节点上运行着若干kubernetes服务Master节点&#xff1a; master是kubernetes cluster的大脑&#xff0c;运行着的Daemon服务包括kube-apiserver&#xff0c;kube-scheduler,kube-controller-manager&#xff0c;etcd和Pod网络…

数据处理与统计分析篇-day04-Numpy与Pandas-Series

一. Numpy详解 Numpy的ndarray的属性 Numpy简介 NumPy&#xff08;Numerical Python&#xff09;是Python数据分析必不可少的第三方库 NumPy的出现一定程度上解决了Python运算性能不佳的问题&#xff0c;同时提供了更加精确的数据类型&#xff0c;使其具备了构造复杂数据类型…

如何用麦肯锡方法分析问题和解决问题?

一、什么是麦肯锡方法&#xff1f; 麦肯锡方法&#xff0c;也被称为麦肯锡7S模型&#xff0c;是全球知名咨询公司麦肯锡公司提出的一种管理方法。麦肯锡公司成立于1926年&#xff0c;是全球领先的管理咨询公司&#xff0c;其服务覆盖各个行业和领域&#xff0c;以高质量、高效率…

高精度加法和减法

高精度加法 在C/C中&#xff0c;我们经常会碰到限定数据范围的情况&#xff0c;我们先来看看常用的int和long long两种数据类型的范围吧。 C标准规定&#xff1a;int占一个机器字长。在32位系统中int占32位&#xff0c;即4个字节&#xff0c;所以int的范围是[-2的31次方&#…