QT实例2(QTableWidget表格中增删数据)

news2024/11/26 11:46:17

案例介绍

本案例仅简单介绍QTableWidget部分使用方法,如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时,设置了条件判断如正则表达式,若用户输入的数据不合法,则添加失败并提示用户错误的地方,便于用户修改。

UI界面设计

请添加图片描述

如上图所示,使用QWidget类创建并设置UI界面,其中控件描述如下表所示。

序号名称类型描述
tableWidgetQTableWidget以表格形式用于展示添加的信息
nameEditQLineEdit填写姓名,不能为空
radioButton1(2)QRadioButton选择性别,默认为男
ageBoxQSpinBox填写年龄,需要大于0且小于100
teleEditQLineEdit填写11位有效电话号码,placeholderText=“请输入11位电话号码”
addButtonQPushButtonText=“添加”,用于在表格中添加数据
delButtonQPushButtonText=“删除”,用于删除表格中所选中一行的数据
clearButtonQPushButtonText=“全部清空”,用于清空表格中的数据

程序实现

widge.h头文件

添加三个槽函数,on_addButton_clicked():用于实现添加数据功能;on_delButton_clicked():用户删除用户在表格中所选中的一行数据;on_clearButton_clicked():用于清空表格中所有数据。

private slots:
    void on_addButton_clicked();
    void on_delButton_clicked();
    void on_clearButton_clicked();

widget.cpp源文件

在构造函数中定义表头。

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QStringList header;
    header <<"姓名"<<"性别"<<"年龄"<<"电话号码";
    ui->tableWidget->setColumnCount(header.size());
    ui->tableWidget->setHorizontalHeaderLabels(header);
    ui->tableWidget->setRowCount(0);
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
}

on_addButton_clicked():首先获取用户所填写的内容,并判断其内容是否合法,例如用户未填写姓名或未填写年龄或者填写错误电话号码都不合法,在判断电话号码合法时采用了正则表达式。若用户填写的信息已经存在表格中,此时会弹框提醒用户并添加失败。若输入信息合法且在表格中不存在一样的姓名,则新建一行插入所填写的信息并弹框提示插入成功。最后清空输入控件中的信息。

void Widget::on_addButton_clicked()
{
    QString name=ui->nameEdit->text();
    int age=ui->ageBox->text().toInt();
    QString sex="男";
    if(ui->radioButton2->isChecked())
        sex="女";
    //正则表达式判断电话号码是否合法
    QRegularExpression exp;
    exp.setPattern("^1[3-9][0-9]{9}$");
    QString tele=ui->teleEdit->text();
    QRegularExpressionMatch match = exp.match(tele);
    if(name.length()==0)
        QMessageBox::information(this,"警告","请输入姓名!!!");
    else if(age==0)
        QMessageBox::information(this,"警告","请输入年龄!!!");
    else if(!match.hasMatch())
        QMessageBox::information(this,"警告","电话号码格式错误!!!");
    else
    {
        bool isEmpty = ui->tableWidget->findItems(name,Qt::MatchExactly).empty();
        if(isEmpty)
        {
            int index=ui->tableWidget->rowCount();
            ui->tableWidget->insertRow(index);    
            ui->tableWidget->setItem(index,0,new QTableWidgetItem(name));
            ui->tableWidget->setItem(index,1,new QTableWidgetItem(sex));
            ui->tableWidget->setItem(index,2,new QTableWidgetItem(QString::number(age)));
            ui->tableWidget->setItem(index,3,new QTableWidgetItem(tele));
            QMessageBox::information(this,"Done","用户添加成功!!!");
        }
        else
            QMessageBox::information(this,"Warning","该用户已存在,无法重复添加!!!");
    }
    //清空输入控件
    ui->nameEdit->clear();
    ui->radioButton1->setChecked(1);
    ui->ageBox->setValue(0);
    ui->teleEdit->clear();
}

on_delButton_clicked():通过tableWidget->currentRow()函数获取用户选中的行数,并通过tableWidget->removeRow()函数将其删除。

on_clearButton_clicked():通过循环一行一行地删除表格中所有数据。

void Widget::on_delButton_clicked()
{//删除在表中所选中的一行数据
    ui->tableWidget->removeRow(ui->tableWidget->currentRow());
}
void Widget::on_clearButton_clicked()
{//删除表中所有数据
    int n=ui->tableWidget->rowCount();
    for(int i=0;i<=n;i++)
        ui->tableWidget->removeRow(0);
}

功能测试

添加数据功能

输入正确合法数据并点击添加后,会弹框提示添加成功,如下图所示:

请添加图片描述

删除数据以及清空功能

①删除一行数据:首先选中表格中“李四”所在行即第2行,并点击删除。

②清空所以数据:直接点击全部清空按钮。如下图所示:

请添加图片描述

异常处理测试

①在不输入姓名的情况下,直接点击添加,弹框提示“请输入姓名!!!”并清空所填内容。

②在输入姓名但不输入年龄的情况下,点击添加,弹框提示“请输入年龄!!!”并清空所填内容。

③在输入姓名和年龄后,输入错误电话号码,点击添加,弹框提示“电话号码格式错误!!!”并清空所填内容。如下图所示:
请添加图片描述
④插入表格中已经存在的用户,如下图所示:
请添加图片描述

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

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

相关文章

IPsec的NAT穿越详解

问题场景 左边的支部&#xff0c;它的防火墙上联路由器&#xff0c;由于防火墙内部的接口使用的是私网地址&#xff0c;这就导致其无无法在公网上与对端防火墙进行IPsec的隧道建立 。所以必须在AR5上面不是NAT地址转换&#xff0c;由于一般使用的是NAPT&#xff0c;isakmp协议因…

ChatGPT评测

总结&#xff1a;ChatGPT很强大&#xff0c;用作学术方面的问答或者软件行业的辅助工具是有一定的作用&#xff0c;但是有些回答设置了限制&#xff0c;并且中文回答方面总是回答一半&#xff0c;需要一直让他继续说&#xff0c;篇幅不是很长&#xff0c;但是往往能说道精髓&am…

最新加装ChatGPT的New Bing申请流程(含出错解决办法)

两天获得New Bing测试资格流程记录 前言一、Microsoft Edge Dev浏览器下载二、Microsoft账号注册与登陆三、浏览器插件下载与添加四、加入候补名单五、写封信给Bing团队 前言 2023.03.08&#xff0c;下午收到了Microsoft Bing公司的邮件&#xff0c;提示测试资格申请成功&…

Qt Xlsx的基本使用

前言 在很多时候 &#xff0c;我们需要将数据导出&#xff0c;之前我是将数据表导出为CSV格式&#xff0c;CSV文件虽然可以用Excel打开&#xff0c;但相对于真正的Xlsx文件&#xff0c;还是有许多不足的。偶然之间&#xff0c;发现了QtXlsx这个第三方库。 1、QtXlsx官网对QtX…

makefile工具的使用,编写一个或多个文件!(简单易上手)

一、make 和 makefile 是什么 1. make 是一个 命令。 2. makefile 是一个 文件&#xff0c;可以自动化的构建项目。 3. 编写 makefile 需要&#xff1a; &#xff08;1&#xff09;依赖关系 &#xff08;2&#xff09;依赖方法 二、什么是依赖关系、什么是依赖方法 下面我简单…

【Java】Java核心要点总结:60

文章目录 1. 乐观锁一定就是好的吗2. Synchronized和ReentrantLock有什么异同3. ReentrantLock是如何实现可重入性的4. 和Synchronized相比&#xff0c;可以重入锁ReentrantLock实现原理有什么不同5. AQS框架 1. 乐观锁一定就是好的吗 乐观锁并不一定好&#xff0c;它有自己的适…

chatgpt赋能python:Python实现将一张图片贴到另一张图片上

Python实现将一张图片贴到另一张图片上 在图像处理中&#xff0c;往往需要将多张图片合成一张图片。这里介绍使用Python实现将一张图片贴到另一张图片上的方法。 准备工作 在实现之前&#xff0c;我们需要安装Python的图像处理库Pillow和numpy。 可以通过pip进行安装&#…

创建一个SpringBoot项目

Spring的诞生是为了简化JAVA程序的开发的 快速开发Spring而诞生的 SpringBoot为了快速开发Spring而诞生的一个框架 1)什么是SpringBoot&#xff1f;为什么要学它?(重要) Spring是包含了众多工具方法的IOC容器 SpringBoot就是Spring框架的脚手架&#xff0c;它的存在就是为了快…

软考A计划-系统架构师-官方考试指定教程-(2/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

chatgpt赋能python:Python屏幕输入介绍:了解命令行输入的基本知识

Python屏幕输入介绍&#xff1a;了解命令行输入的基本知识 Python是一种使用广泛的编程语言&#xff0c;用于编写各种类型的应用程序&#xff0c;包括图形用户界面应用程序和基于命令行的应用程序。对于基于命令行的应用程序来说&#xff0c;屏幕输入非常重要。本文将介绍Pyth…

Object.assign用法

Object.assign用法 Object.assign是什么&#xff1f; 首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的&#xff1f; Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。简单来说&#xff0c;就是Obj…

stm32超声波测距代码

操作思路&#xff1a; 初始化时将trig和echo端口都置低&#xff0c;首先向给trig 发送至少10 us的高电平脉冲&#xff08;模块自动向外发送8个40K的方波&#xff09;&#xff0c;然后等待&#xff0c;捕捉 echo 端输出上升沿&#xff0c;捕捉到上升沿的同时&#xff0c;打开定时…

(附源码)python音乐电台推荐系统的设计与实现 毕业设计 301210

音乐电台推荐系统 摘 要 随着人类向信息社会的不断迈进&#xff0c;风起云涌的信息时代正掀起一次新的革命&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个B/S结构的音乐电台推荐系统来管理音乐电台信息&#xff0…

OpenAI 接口文档-(中文版)-(一)

介绍 Introduction 您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。 若要安装官方 Python 绑定&#xff0c;请运行以下命令&#xff1a; pip install openai 要安装官方的 Node.js 库&#xff0c;请在 No…

chatgpt赋能python:Python将空格改为换行符

Python将空格改为换行符 在Python编程中&#xff0c;经常需要对字符串进行处理&#xff0c;其中包括将空格替换为换行符。这篇文章将会介绍如何使用Python来实现这个目标&#xff0c;并分享一些关于字符串处理的技巧。 为什么要将空格改为换行符 将空格改为换行符可以让文本…

chatgpt赋能python:Python屏蔽一段代码

Python屏蔽一段代码 在Python编程中&#xff0c;有时我们需要屏蔽一段代码以便于调试或者测试。在很多情况下&#xff0c;我们可能不想删除这段代码&#xff0c;因为需要在将来的某个时间再次使用它。为了解决这个问题&#xff0c;我们可以使用Python中的注释语句或者条件语句…

Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)

目录 1. 创建一个Unreal项目2. 启用Pixel Streaming插件3. 下载Unreal 5.2对应的Pixel Streaming Infrastructure4. 创建一个Vue项目5. 推流方式一&#xff1a;使用Unreal Engine 5.26. 推流方式二&#xff1a;打包项目参考资源&#xff1a; 1. 创建一个Unreal项目 默认大家都…

机器人的免费使用方法

目录 一、机器人是什么&#xff1f; 二、机器人免费使用的方法&#xff1a; 第一点&#xff1a;电脑端 第二点&#xff1a;手机端 三、结语&#xff1a; 一、机器人是什么&#xff1f; 博主理解&#xff1a;方便生活&#xff0c;比Siri更加高级&#xff0c;能够智能的对我们…

chatgpt赋能python:Python就业前景分析

Python就业前景分析 Python已成为全球最流行的编程语言之一&#xff0c;因其易学、易用、高效、可扩展性强等特点&#xff0c;Python在各个领域都发挥着重要作用。Python的发展和应用迅猛&#xff0c;拥有Python编程经验的工程师在各个领域都面临着广泛的就业机会。 Python的…

推荐一个Edge浏览器中的一个好用问答插件。

目录 ChatGPT介绍:一、ChatGPT是什么?二、ChatGPT发展:三、ChatGPT 优点:四、Edge浏览器插件五、结语: ChatGPT介绍: 一、ChatGPT是什么? ChatGPT 是一个基于语言模型 GPT-3.5 的聊天机器人&#xff0c;ChatGPT模型是Instruct GPT的姊妹模型&#xff08;siblingmodel&#x…