【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;
}
相关推荐
迅猛龙办公室4 分钟前
实现第一个python程序(HelloWorld)
开发语言·python
phltxy7 分钟前
C 语言动态内存管理:从申请空间到安全释放
c语言·开发语言·ui
可乐鸡翅yeah_11 分钟前
M3U8 防盗链 URL‑Token 签名,新手开发实操避坑
开发语言·javascript·ios·音视频·safari
2603_9658966222 分钟前
JS原型与原型链|对象继承与实例底层原理
开发语言·javascript·原型模式
拉格朗日(Lagrange)24 分钟前
【第2 章】WorkBuddy 从入门到高手
开发语言·python
yujunl26 分钟前
在U9C订单列表上开放多个按钮层叠的问题解决
开发语言
喆星时瑜1 小时前
Win10/11 安装 R 与 RStudio 详细图文教程
开发语言·r语言·安装
心中有你02141 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
言乐62 小时前
Python自动去除水印
开发语言·python·django·virtualenv·pygame
大圣编蚕2 小时前
C语言入门:基本语法汇总
c语言·开发语言