• 【QT】QTableWidget


    新建项目

    制作流程

    代码

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. // tableWidget的使用
    9. // 第一步,设置列数
    10. ui->tableWidget->setColumnCount(3);
    11. // 第二步,设置水平表头的的标签
    12. ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "姓名" << "性别" << "年龄");
    13. // 第三步,设置行数
    14. ui->tableWidget->setRowCount(5);
    15. // 第四部,设置正文
    16. // ui->tableWidget->setItem(0, 0, new QTableWidgetItem("亚瑟"));
    17. QStringList nameList;
    18. nameList << "亚瑟" << "妲己" << "韩信" << "孙悟空" << "孙膑";
    19. QList genderList;
    20. genderList << "男" << "女" << "男" << "男" << "男";
    21. for (int i = 0; i < 5; i++) {
    22. int col = 0;
    23. ui->tableWidget->setItem(i, col++, new QTableWidgetItem(nameList[i]));
    24. ui->tableWidget->setItem(i, col++, new QTableWidgetItem(genderList.at(i)));
    25. // int转QString,number静态函数
    26. ui->tableWidget->setItem(i, col++, new QTableWidgetItem(QString::number(18 + i)));
    27. }
    28. }
    29. Widget::~Widget()
    30. {
    31. delete ui;
    32. }

    扩展

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

    目前效果是这样的

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

    代码

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include
    4. Widget::Widget(QWidget *parent)
    5. : QWidget(parent)
    6. , ui(new Ui::Widget)
    7. {
    8. ui->setupUi(this);
    9. // tableWidget的使用
    10. // 第一步,设置列数
    11. ui->tableWidget->setColumnCount(3);
    12. // 第二步,设置水平表头的的标签
    13. ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "姓名" << "性别" << "年龄");
    14. // 第三步,设置行数
    15. ui->tableWidget->setRowCount(5);
    16. // 第四部,设置正文
    17. // ui->tableWidget->setItem(0, 0, new QTableWidgetItem("亚瑟"));
    18. QStringList nameList;
    19. nameList << "亚瑟" << "妲己" << "韩信" << "孙悟空" << "孙膑";
    20. QList genderList;
    21. genderList << "男" << "女" << "男" << "男" << "男";
    22. for (int i = 0; i < 5; i++) {
    23. int col = 0;
    24. ui->tableWidget->setItem(i, col++, new QTableWidgetItem(nameList[i]));
    25. ui->tableWidget->setItem(i, col++, new QTableWidgetItem(genderList.at(i)));
    26. // int转QString,number静态函数
    27. ui->tableWidget->setItem(i, col++, new QTableWidgetItem(QString::number(18 + i)));
    28. }
    29. // 点击添加赵云
    30. connect(ui->addButton, &QPushButton::clicked, this, [=]() {
    31. // 如果有赵云,就不添加
    32. bool flag = ui->tableWidget->findItems("赵云", Qt::MatchExactly).isEmpty();
    33. // 存在
    34. if (flag == false) {
    35. QMessageBox::warning(this, "警告", "已经有赵云,添加失败");
    36. } else {
    37. // 添加一行
    38. ui->tableWidget->insertRow(0);
    39. ui->tableWidget->setItem(0, 0, new QTableWidgetItem("赵云"));
    40. ui->tableWidget->setItem(0, 1, new QTableWidgetItem("男"));
    41. ui->tableWidget->setItem(0, 2, new QTableWidgetItem(QString::number(25)));
    42. }
    43. });
    44. // 点击删除赵云
    45. connect(ui->delButton, &QPushButton::clicked, this, [=]() {
    46. // 如果没有赵云,就不删除
    47. bool flag = ui->tableWidget->findItems("赵云", Qt::MatchExactly).isEmpty();
    48. // 不存在,无法删除
    49. if (flag) {
    50. QMessageBox::warning(this, "警告", "没有有赵云,删除失败");
    51. } else {
    52. // 找到位置,删除,找到第一个
    53. int row = ui->tableWidget->findItems("赵云", Qt::MatchExactly).first()->row();
    54. ui->tableWidget->removeRow(row);
    55. }
    56. });
    57. }
    58. Widget::~Widget()
    59. {
    60. delete ui;
    61. }
  • 相关阅读:
    【UV打印机】电气之光电传感器
    Pointnet++改进即插即用系列:全网首发Star_Block星型操作 |即插即用,提升特征提取模块性能
    画面消失,但功能还在正常实现,窗口绘制出了问题
    介绍下Java内存区域(运行时数据区)
    猿创征文 |【算法面试入门必刷】动态规划-线性dp(二)
    在Oracle中创建DBLINK
    《动手学深度学习 Pytorch版》 5.2 参数管理
    新手开抖店——一定忽略的“发货”问题,违规必扣保证金!
    神经网络参数的学习-损失函数与梯度下降
    元素显示类型-快元素、行内元素、行内快元素、盒子模型以及元素类型相互转换
  • 原文地址:https://blog.csdn.net/Zhouzi_heng/article/details/133953238