【QT】QTableWidget

新建项目

制作流程

代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // tableWidget的使用
    // 第一步,设置列数
    ui->tableWidget->setColumnCount(3);
    // 第二步,设置水平表头的的标签
    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "姓名" << "性别" << "年龄");
    // 第三步,设置行数
    ui->tableWidget->setRowCount(5);

    // 第四部,设置正文
//    ui->tableWidget->setItem(0, 0, new QTableWidgetItem("亚瑟"));

    QStringList nameList;
    nameList << "亚瑟" << "妲己" << "韩信" << "孙悟空" << "孙膑";

    QList<QString> genderList;
    genderList << "男" << "女" << "男" << "男" << "男";

    for (int i = 0; i < 5; i++) {
        int col = 0;
        ui->tableWidget->setItem(i, col++, new QTableWidgetItem(nameList[i]));
        ui->tableWidget->setItem(i, col++, new QTableWidgetItem(genderList.at(i)));
        // int转QString,number静态函数
        ui->tableWidget->setItem(i, col++, new QTableWidgetItem(QString::number(18 + i)));
    }


}

Widget::~Widget()
{
    delete ui;
}

扩展

打破布局,添加按钮,栅格

目前效果是这样的

点击【添加赵云】,添加赵云信息,点击【删除赵云】,删除赵云信息

代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // tableWidget的使用
    // 第一步,设置列数
    ui->tableWidget->setColumnCount(3);
    // 第二步,设置水平表头的的标签
    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "姓名" << "性别" << "年龄");
    // 第三步,设置行数
    ui->tableWidget->setRowCount(5);

    // 第四部,设置正文
//    ui->tableWidget->setItem(0, 0, new QTableWidgetItem("亚瑟"));

    QStringList nameList;
    nameList << "亚瑟" << "妲己" << "韩信" << "孙悟空" << "孙膑";

    QList<QString> genderList;
    genderList << "男" << "女" << "男" << "男" << "男";

    for (int i = 0; i < 5; i++) {
        int col = 0;
        ui->tableWidget->setItem(i, col++, new QTableWidgetItem(nameList[i]));
        ui->tableWidget->setItem(i, col++, new QTableWidgetItem(genderList.at(i)));
        // int转QString,number静态函数
        ui->tableWidget->setItem(i, col++, new QTableWidgetItem(QString::number(18 + i)));
    }


    // 点击添加赵云
    connect(ui->addButton, &QPushButton::clicked, this, [=]() {
        // 如果有赵云,就不添加
        bool flag = ui->tableWidget->findItems("赵云", Qt::MatchExactly).isEmpty();
        // 存在
        if (flag == false) {
            QMessageBox::warning(this, "警告", "已经有赵云,添加失败");
        } else {
            // 添加一行
            ui->tableWidget->insertRow(0);
            ui->tableWidget->setItem(0, 0, new QTableWidgetItem("赵云"));
            ui->tableWidget->setItem(0, 1, new QTableWidgetItem("男"));
            ui->tableWidget->setItem(0, 2, new QTableWidgetItem(QString::number(25)));
        }
    });


    // 点击删除赵云
    connect(ui->delButton, &QPushButton::clicked, this, [=]() {
        // 如果没有赵云,就不删除
        bool flag = ui->tableWidget->findItems("赵云", Qt::MatchExactly).isEmpty();
        // 不存在,无法删除
        if (flag) {
            QMessageBox::warning(this, "警告", "没有有赵云,删除失败");
        } else {
            // 找到位置,删除,找到第一个
            int row = ui->tableWidget->findItems("赵云", Qt::MatchExactly).first()->row();
            ui->tableWidget->removeRow(row);
        }
    });

}

Widget::~Widget()
{
    delete ui;
}
相关推荐
重生之我在20年代敲代码23 分钟前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文24 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
编程零零七3 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
2401_858286113 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py4 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy4 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
C-SDN花园GGbond5 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处6 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
leon6256 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab