【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;
}
相关推荐
尘浮生6 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
hopetomorrow20 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
小牛itbull29 分钟前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
请叫我欧皇i38 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
闲暇部落41 分钟前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
GIS瞧葩菜1 小时前
局部修改3dtiles子模型的位置。
开发语言·javascript·ecmascript
chnming19871 小时前
STL关联式容器之set
开发语言·c++
熬夜学编程的小王1 小时前
【C++篇】深度解析 C++ List 容器:底层设计与实现揭秘
开发语言·数据结构·c++·stl·list
GIS 数据栈1 小时前
每日一书 《基于ArcGIS的Python编程秘笈》
开发语言·python·arcgis
Mr.131 小时前
什么是 C++ 中的初始化列表?它的作用是什么?初始化列表和在构造函数体内赋值有什么区别?
开发语言·c++