QTableWidget 表格增删数据

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

1、创建一个QT Widget Application:

1.1 打开QtWidgetsApplication3.ui

QTableWidget 表格增删数据_第1张图片

使用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 
#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 
#include 

#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 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtWidgetsApplication3 w;
    w.show();
    return a.exec();
}

效果:

QTableWidget 表格增删数据_第2张图片

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

你可能感兴趣的:(#,QT常用控件,qt)