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博客