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

这篇具有很好参考价值的文章主要介绍了QT实例2(QTableWidget表格中增删数据)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

案例介绍

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

UI界面设计

qtablewidget添加数据,qt,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=“全部清空”,用于清空表格中的数据

程序实现

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);
}

功能测试

添加数据功能

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

qtablewidget添加数据,qt,ui,开发语言

删除数据以及清空功能

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

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

qtablewidget添加数据,qt,ui,开发语言

异常处理测试

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

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

③在输入姓名和年龄后,输入错误电话号码,点击添加,弹框提示“电话号码格式错误!!!”并清空所填内容。如下图所示:
qtablewidget添加数据,qt,ui,开发语言
④插入表格中已经存在的用户,如下图所示:
qtablewidget添加数据,qt,ui,开发语言文章来源地址https://www.toymoban.com/news/detail-790644.html

到了这里,关于QT实例2(QTableWidget表格中增删数据)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget

    【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget(1) QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 QTableWidget 有很多属性和方法,完整的可查看帮助文档。 在窗口上放置一个 QTableWidget 控件后,既可以在设计师 UI 界面来编辑属性和添加数据,也

    2024年02月12日
    浏览(38)
  • 表格控件QTableWidget

    简介 QTableWidget 是 Qt 中的 表格 组件类。 在窗体上放置一个 QTableWidget 组件后,可以在 Property Editor 里对其进行属性设置,双击这个组件,可以打开一个编辑器,对其 Colum、Row 和 Item 进行编辑。 行/列 第0列 第1列 第0行 ( 0 , 0 ) ( 0 , 1 ) 第1行 ( 1 , 0 ) ( 1 , 1 ) 界

    2024年02月11日
    浏览(26)
  • PyQt QTableWidget 表格控件的使用

    PyQT开发图形界面应用时,可用 QTableWidget 控件,以表格方式直观地显示二维表格形状的数据,如列表,数组、pandas DataFrame等。 如果你想用表格方式直接显示并操作数据库表时,选择 QTableView类更合适。 步骤如下: 生成QTableWidget对象 设置表头以及表格参数 构建 QTableWidgetIte

    2024年02月01日
    浏览(44)
  • QTableWidget 实现添加 QCheckBox

    一、 添加复选框QCheckBox初始化默认状态,效果图 主要代码: 二、 添加两个复选框QCheckBox的互斥功能,同时只能有一个选中 效果图 主要代码: 互斥代码: 数据选中判断

    2024年02月13日
    浏览(50)
  • Qt::实现qtablewidget分页功能

    头文件: .cpp文件 实现效果:      大佬写得很棒,很简单就实现了qtablewidget的分页功能,但是不知道会不会有什么问题,现在看起来是没问题的,加了个跳转功能,写得比较潦草

    2024年02月15日
    浏览(30)
  • QT-QTablewidget 设置选中某一行

    要在 QTableWidget 中设置选中的行,可以使用 setCurrentItem() 函数来设置当前的 QTableWidgetItem。你可以通过调用 QTableWidget 的 item() 函数获得指定行和列的 QTableWidgetItem,然后通过将其传递给 setCurrentItem() 函数来设置选中的行。 下面是一个示例代码,演示了如何设置 QTableWidget 中的选

    2024年02月09日
    浏览(33)
  • Qt编程基础 | 第六章-窗体 | 6.3、QTableWidget

    QTableWidget是QT中的表格组件类,一般用来展示多行多列的数据,是QT中使用较多的控件之一。QTableWidgetItem用来表示表格中的一个单元格,整个表格都需要用逐个单元格构建起来。 2.1、设置表格的行数与列数 2.2、添加单元格 2.3、表头设置 2.4、设置行表头、列表头是否显示 2.

    2024年02月13日
    浏览(25)
  • Qt的QTableWidget如何在表头增加复选框

    QTableWidget只能对表格中的单元格设置复选框,而且只能进行比较有限的控制,如果需要设置图标,显示居中等等,可能需要自定义Item或可以利用setCellWidget将单元格的控件设置为自定义控件,而表头如果是使用自带的表头则无法通过设置显示出复选框,必须进行自定义表头,

    2024年02月11日
    浏览(36)
  • QT-QTableWidget设置单元项图标和图标大小

    要设置 QIcon 的大小,你可以使用 QPixmap 来加载原始图像,并调用 QPixmap 的 scaled() 函数来缩放图像的尺寸。然后,将缩放后的 QPixmap 设置给 QIcon,最后将 QIcon 设置给 QTableWidgetItem 的图标。 下面是一个示例代码,演示了如何设置 QIcon 的大小: 在示例代码中,我们加载原始图像

    2024年02月14日
    浏览(31)
  • 【Qt】6.QTableWidget控件、其他控件、自定义控件封装、鼠标事件

    目录 QTableWidget控件 代码 widget.cpp 结果 其他控件 stackWidget栈控件 下拉框 代码 widget.cpp 结果 自定义控件封装 代码 smallwidget.h smallwidget.cpp widget.cpp 结果 鼠标事件 代码 mylabel.h mylabel.cpp 结果 设置列数setColumnCount 添加水平头setHorizontalHeaderLabels 设置行数setRowCount 设置正文setItem(行号

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包