QTableWidget 表格增删数据

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

1、创建一个QT Widget Application:

1.1 打开QtWidgetsApplication3.ui

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

序号

名称

类型

描述

tableWidget

QTableWidget

以表格形式用于展示添加的信息

nameEdit

QLineEdit

填写姓名,不能为空

radioButton1(2)

QRadioButton

选择性别,默认为男

ageBox

QSpinBox

填写年龄,需要大于0且小于100

teleEdit

QLineEdit

填写11位有效电话号码,属性placeholderText=“请输入11位电话号码”

addButton

QPushButton

Text=“添加”,用于在表格中添加数据

delButton

QPushButton

Text=“删除”,用于删除表格中所选中一行的数据

clearButton

QPushButton

Text=“全部清空”,用于清空表格中的数据

2、添加源码

//1、QtWidgetsApplication3.h文件
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication3.h"class QtWidgetsApplication3 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication3(QWidget *parent = Q_NULLPTR);private:Ui::QtWidgetsApplication3Class ui;private slots:void on_addButton_clicked();void on_delButton_clicked();void on_clearButton_clicked();
};//2、QtWidgetsApplication3.cpp文件
#include "QtWidgetsApplication3.h"
#include <QWidget>
#include <QMessageBox>#pragma execution_character_set("utf-8")QtWidgetsApplication3::QtWidgetsApplication3(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QStringList header;header << "姓名" << "性别" << "年龄" << "电话号码";ui.tableWidget->setColumnCount(header.size());ui.tableWidget->setHorizontalHeaderLabels(header);ui.tableWidget->setRowCount(0);ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//不可编辑}void QtWidgetsApplication3::on_addButton_clicked()
{QString name = ui.nameEdit->text();//姓名int age = ui.ageBox->text().toInt();//年龄QString sex = "男";if (ui.radioButton_2->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{//使用文本name查找项目:MatchExactly表示 项名称必须完全匹配text//如果没有此项,就可以添加了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", "用户添加成功!!!");}elseQMessageBox::information(this, "Warning", "该用户已存在,无法重复添加!!!");}//清空输入控件。设置初始值ui.nameEdit->clear();ui.radioButton->setChecked(1);ui.ageBox->setValue(0);ui.teleEdit->clear();
}void QtWidgetsApplication3::on_delButton_clicked()//删除当前行
{//删除在表中所选中的一行数据//currentRow:当前行,removeRow:移除当前行ui.tableWidget->removeRow(ui.tableWidget->currentRow());
}void QtWidgetsApplication3::on_clearButton_clicked()//全部清空
{//删除表中所有数据int n = ui.tableWidget->rowCount();//总行数for (int i = 0;i <= n;i++)ui.tableWidget->removeRow(0);//遍历删除第0行
}//3、main.cpp文件
#include "QtWidgetsApplication3.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);QtWidgetsApplication3 w;w.show();return a.exec();
}

效果:

参考原文:QT实例2(QTableWidget表格中增删数据)_qtablewidget添加数据_abcdefghinjk的博客-CSDN博客

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

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

相关文章

3.3 使用广播信道的数据链路层

思维导图&#xff1a; 3.3.1 局域网的数据链路层 ### 3.3 使用广播信道的数据链路层 #### 简介 - 广播信道支持一对多通信。 - 局域网技术在20世纪70年代末兴起&#xff0c;现在在计算机网络中占有主导地位。 #### 3.3.1 局域网的数据链路层 **局域网的特点&#xff1a;** 1…

9-AJAX-上-原理详解

一、定义 1、什么是Ajax Ajax&#xff1a;即异步 JavaScript 和XML。Ajax是一种用于创建快速动态网页的技术。通过在后台与进行少量数据交换&#xff0c;Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新。而传统的…

FairGuard游戏加固无缝兼容 Android 14 正式版

北京时间10月4日&#xff0c;谷歌公司在“Made by Google 2023”硬件发布会上公开了新版安卓操作系统—— Android 14 正式版。 为保证产品的加固效果并提供更优质的服务&#xff0c;FairGuard游戏加固团队第一时间组织人员进行了相关测试。 据测试&#xff0c;FairGuard游戏…

架构师选择题--计算机网络

架构师选择题--计算机网络 22年考题21年考题20年考题19年真题2017考题 22年考题 d http:80 https:httpssl &#xff1a;443 b b pop3是邮件接收协议&#xff1a;110 SMTP是邮件发送协议&#xff1a;25 http:80 A 网络隔离&#xff1a;防火墙&#xff08;逻辑&#xff09;&…

聊聊JDK19特性之虚拟线程 | 京东云技术团队

1.前言 在读《深入理解JVM虚拟机》这本书前两章的时候整理了JDK从1.0到最新版本发展史&#xff0c;其中记录了JDK这么多年来演进过程中的一些趣闻及引人注目的一些特性&#xff0c;在调研JDK19新增特性的时候了解到了虚拟线程这个概念&#xff0c;于是对虚拟线程进行学习整理内…

APK大小缩小65%,内存减少70%:如何优化Android App

APK大小缩小65&#xff05;&#xff0c;内存减少70&#xff05;&#xff1a;如何优化Android App 我们一直在努力为我们的Android应用程序构建MVP产品。在开发MVP产品后&#xff0c;我们发现需要进行应用程序优化以提高性能。经过分析&#xff0c;我们发现了以下可以改进的应用…

提取log文件中的数据,画图

要提取的log格式如下&#xff1a; 代码如下&#xff1a; import reimport matplotlib.pyplot as plt import numpy as npimport argparse from os import path from re import searchclass DataExtractor(object): DataExtrator class def __init__(self, infile, keyword, out…

Docker基本操作【一篇学会项目部署】

文章目录 一、Docker简介二、Docker安装三、配置镜像加速四、Docker部署五、Docker基础操作1. 常见命令2. 操作演示3. 数据卷①nginx的html目录挂载②分析匿名数据卷③MySQL的本地目录挂载 4. 自定义镜像①Dockerfile②构建镜像 5. 网络①常见命令②自定义网络 六、DockerCompo…

乐优商城(二)搭建后台前端

1. 搭建后台管理前端 1.1 导入已有资源 找到已经准备好的 leyou-manage-web 压缩文件&#xff0c;这就是后台管理的前端项目 解压 leyou-manage-web 文件到项目中&#xff0c;注意与 leyou 文件同级 1.2 安装依赖 在 IDEA 中打开 leyou-manage-web 工程 2.打开 Teminal&…

2023年中国医学影像信息系统市场规模、竞争格局及行业趋势分析[图]

医学影像信息系统简称PACS&#xff0c;与临床信息系统、放射学信息系统、医院信息系统、实验室信息系统同属医院信息系统。医学影像信息系统是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。主要包括&#xff1a;预约管理、数据接收、影像处理、…

如何开始学习量子机器学习

一、关于量子计算 这是我关于量子机器学习&#xff08;QML&#xff09;的第二篇文章&#xff0c;这是第一篇&#xff0c;关于为什么你应该开始学习QML。 开始研究量子机器学习很困难&#xff0c;因为我不知道我需要了解多少量子力学和计算知识。我在101年上大学时上了量子力学2…

腾讯云短信验证登录

提前准备工作 1.已 注册腾讯云 账号&#xff0c;并完成 企业实名认证。 2.已 购买 短信套餐包。 3.准备短信签名归属方资质证明文件 4.已获取短信应用的 SDKAppID。 主要获取这几个参数 secretId(秘钥id) secretKey(秘钥key) SmsSdkAppId(appId) TemplateId(短信模板i…

Android:自定义原生TimePickerDialog样式

效果图&#xff1a; 目标效果图&#xff1a; 原生效果&#xff1a; 实现&#xff1a; 首先是Dialog样式&#xff1a; <style name"TimePickerDialogStyle" parent"style/Theme.AppCompat.DayNight.Dialog.Alert"><item name"android:time…

Nosql redis高可用和持久化

Nosql redis高可用和持久化 1、redis高可用2、redis持久化2.1redis持久化2.2Redis 持久化方法2.3RDB 持久化2.3.1RDB持久化工作原理2.3.2触发条件2.3.3其他自动触发机制2.3.4执行流程2.3.5启动时加载 2.4AOF 持久化2.4.1AOF持久化原理2.4.2开启AOF2.4.3执行流程2.4.4文件重写的…

css怎么实现文字描边

有时&#xff0c;我们会遇到UI稿有文字描边的效果&#xff0c;比如下图的效果。 一、给需要描边的文字加一个id选择器 例如&#xff1a; 二、css写法&#xff1a; number,{//这个是实现文字描边的关键&#xff0c;也就是‘空心文字’&#xff0c;这个是定义文字字符的描边的宽…

对比纯软开与嵌入式硬件开发谁更好呢?

对比纯软开与嵌入式硬件开发谁更好呢&#xff1f; 你的纠结和犹豫是理解的&#xff0c;职业选择确实是一个重要的决策。我明白你在嵌入式和软件开发之间犹豫不决的原因。让我给你提供一些建议&#xff0c;帮助你做出更明智的决定。最近很多小伙伴找我&#xff0c;说想要一些嵌入…

1600*A. Maze(DFS)

Problem - 377A - Codeforces 解析&#xff1a; 对于正向思考比较复杂的题目&#xff0c;我们可以反向思考。 由于最后剩余的 “ . ” 必须相连&#xff0c;所以我们将所有 “ . ” 全部换成 “ X ”&#xff0c;然后从其中DFS一个联通的“ X ”反向换成 “ . ”即可。 #incl…

配资炒股优质平台排名:十大排名和评估!

随着互联网的发展&#xff0c;配资炒股平台已经成为了越来越多投资者的选择&#xff0c;但是市场上的配资炒股平台各不相同&#xff0c;投资者如何选择一家优质的平台呢&#xff1f;这时候&#xff0c;配资炒股优质平台排名就显得尤为重要。 配资炒股优质平台排名的作用&#…

HTML5开发实例-3D全景(ThreeJs全景Demo) 详解(图)

前言 在现在市面上很多全景H5的环境下,要实现全景的方式有很多,可以用css3直接构建也可以用基于threeJs的库来实现,还有很多别的制作全景的软件使用 本教学适用于未开发过3D全景的工程狮 如果觉得内容太无聊可以直接跳到最后 下载代码 理论 整个3D全景所用的相关理论就…

将 Ordinals 与比特币智能合约集成:第 3 部分

基于 Ordinals 的 BSV-20 同质化代币 之前&#xff0c;我们展示了如何将比特币智能合约与 Ordinals 集成&#xff0c;Ordinals 可以被视为链上的 NFT。 在本文中&#xff0c;我们将展示如何将它们与同质化代币&#xff08;即 BSV-20 代币&#xff09;集成。 我们仍然以拍卖为例…