QTableWidget 表格增删数据

news2024/9/25 7:19:50

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_OBJECT

public:
    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", "用户添加成功!!!");
		}
		else
			QMessageBox::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.coloradmin.cn/o/1079198.html

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

相关文章

python结合excel数据轻松实现接口自动化测试

在刚刚进入测试行业的时候&#xff0c;最开始也是做功能测试&#xff0c;我想很多伙伴和我一样&#xff0c;觉得自动化测试都很高端&#xff0c;很神秘。迫不及待的想去学习作自动化测试。 以前比较常用数据库python做自动化&#xff0c;后面发现excel个人觉得更加适合&#x…

【java学习】面向对象编程(12)

文章目录 前言1. 什么是"面向对象"的编程思想?1.1. 面向对象与面向过程 2. java类及类成员 前言 学习路线&#xff1a; 学习面向对象内容的三条主线1. java类及类成员2. 面向对象的三大特征3. 其他关键字 学习内容&#xff1a; 要学习的内容1. 面向对象与面向过…

内网渗透——黄金票据与白银票据

文章目录 黄金票据与白银票据1. 背景2. 具体实现2.1 Kerberos协议认证流程 3. 黄金票据3.1 条件3.2 适用场景3.3 利用方式 4. 白银票据4.1 条件4.2 适用场景4.3 利用方式 5. 金票和银票的区别5.1 获取的权限不同5.2 认证流程不同5.3 加密方式不同 6. 经典面试题6.1 什么是黄金票…

(蓝宝书)网络安全——CTF那些事儿

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

【常用页面记录】vue+elementUI实现搜索框+上拉加载列表

一、代码 <template><div class"mainBox"><div class"headbox"><el-input placeholder"请输入文件名称搜索" prefix-icon"el-icon-search" v-model"fileName" :clearable"true" change&qu…

Spring5应用之事务处理

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…

【Vuex+ElementUI】

一、导言 1、引言 Vuex是一个用于Vue.js应用程序的状态管理模式和库。它建立在Vue.js的响应式系统之上&#xff0c;提供了一种集中管理应用程序状态的方式。使用Vuex&#xff0c;您可以将应用程序的状态存储在一个单一的位置&#xff08;即“存储”&#xff09;中&#xff0c;…

软件‘小程序‘前台开发软件定制的知识|app网站搭建

软件&#xff0c;小程序&#xff0c;前台开发软件定制的知识 随着互联网的快速发展&#xff0c;软件&#xff0c;小程序&#xff0c;前台开发软件定制已经成为了企业必备的工具。它可以帮助企业更好地管理业务&#xff0c;提高效率&#xff0c;增强用户体验。那么&#xff0c;什…

英语——分享篇——每日100词——701-800

audience——n.听众&#xff0c;观众&#xff0c;读者——au澳大利亚(编码)di弟(拼音)ence摁厕(拼音)———听众在澳大利亚被弟弟摁倒在厕所 flu———n.流行性感冒———flu俘虏————俘虏带来流行性感冒 belt———n.腰带&#xff0c;皮带———b6(象形)el饿狼(拼音)t伞(…

flutter入门实践2——将完成的flutter软件打包为apk

将完成的flutter软件打包为apk&#xff1a; 视频版&#xff1a; 【前端教程-Flutter篇-flutter之打包安卓版本的APP】https://www.bilibili.com/video/BV11K4y1S7Sg?vd_sourcec008a8e3bd95154e374408adc754394a 文字版&#xff1a;Flutter 打包APP &#xff08;Android &am…

《动手学深度学习 Pytorch版》 8.3 语言模型和数据集

8.3.1 学习语言模型 依靠在 8.1 节中对序列模型的分析&#xff0c;可以在单词级别对文本数据进行词元化。基本概率规则如下&#xff1a; P ( x 1 , x 2 , … , x T ) ∏ t 1 T P ( x t ∣ x 1 , … , x t − 1 ) P(x_1,x_2,\dots,x_T)\prod^T_{t1}P(x_t|x_1,\dots,x_{t-1}) …

黑马JVM总结(三十)

&#xff08;1&#xff09;类加载-连接-解析 new对象&#xff0c;会触发对象的解析和初始化 通过类加载器加载类C&#xff0c;这里只会进行类C的加载并不会导致类C的解析以及初始化&#xff0c;这样加载类C的时候类D也不会解析跟初始化 通过jps找到进程id&#xff1a; 打开…

Ant Design Form.List基础用法

使用 Form.List 使用 项目中需要在新增可以多个如图 代码如下 // An highlighted block <Card title"产品信息" bordered{false}><Form.List name"productList" >{(fields, {add, remove}) > (<>{fields.map((field) > (<Ro…

1.2Python 三方库的安装以 pandas 为例_python量化实用版教程(初级)

Python 三方库的安装以 pandas 为例 Python 拥有丰富的第三方库&#xff0c;可以方便地进行各种编程任务。以 pandas 库为例&#xff0c;下面是安装 pandas 库的步骤&#xff1a; 1. 打开命令行终端&#xff08;Windows 用户可以使用 cmd&#xff0c;Linux 和 Ma…

ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机分类模型

参数输入 输出 栅格 预测为负类的概率 预测为正类的概率 二值化结果 评估结果 ROC曲线

绝地求生是一款大逃杀游戏,玩家需要在一个封闭的地图上与其他玩家进行生存竞争

绝地求生是韩国蓝洞公司开发的一款大逃杀游戏。玩家绝地求生是一款以生存竞争为主题的多人在线射击游戏。玩家将被放置在一个封闭的地图中&#xff0c;需要在资源有限的环境中生存下来&#xff0c;并与其他玩家进行战斗。玩家需要不断搜索武器和装备&#xff0c;同时要注意限定…

web:[MRCTF2020]你传你呢

题目 点进页面显示如下 上传文件&#xff0c;先随便上传一个文件看看情况 构造含有一句话木马的图片上传 访问显示错误 这里参考了大佬的wp&#xff0c;上传一个.htaccess文件,这个.htaccess文件的作用就是把这个图片文件解析成php代码执行 .htaccess文件的内容为 <FilesM…

OpenCV4(C++)—— 几何图形的绘制

文章目录 一、基本图形1、线2、线圆3、线椭圆4、矩形 二、多边形 一、基本图形 1、线 绘制线&#xff0c;要给出两个点坐标 void cv::line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness 1, int lineType LINE_8, int shift 0);…

【编程的黄金法则】适度注释,保持平衡

引言 身为一名程序员&#xff0c;你是否也曾为到底需不需要写注释而烦恼&#xff1f; 有些人认为&#xff0c;代码如诗&#xff0c;注释则是诗中的注解&#xff0c;能够帮助他人&#xff08;包括未来的你自己&#xff09;理解代码的意图。而另一些人则认为&#xff0c;好的代…

3D目标检测数据集 DAIR-V2X-V

本文分享国内场景3D目标检测&#xff0c;公开数据集 DAIR-V2X-V&#xff08;也称为DAIR-V2X车端&#xff09;。DAIR-V2X车端3D检测数据集是一个大规模车端多模态数据集&#xff0c;包括&#xff1a; 22325帧 图像数据22325帧 点云数据2D&3D标注 基于该数据集&#xff0c;可…