• QTableWidget 表格部件


    QTableWidget是QT中的表格组件类。一般用来展示多行多列的数据,是QT中使用较多的控件之一。
    1、QTableWidgetItem对象

    QTableWidget中的每一个单元格都是一个QTableWidgetItem对象,因此先介绍下QTableWidgetItem的常用方法
    1.1、设置文本内容

    void QTableWidgetItem::setText(const QString &text)

    1.2、设置对齐方式

    void QTableWidgetItem::setTextAlignment(int alignment)

    1.3、设置单元格背景色

    void QTableWidgetItem::setBackground(const QBrush &brush)

    1.4、设置单元格显示图标

    void QTableWidgetItem::setIcon(const QIcon &icon)

    1.5、设置单元格字体

    void QTableWidgetItem::setFont(const QFont &font)

    1.6、获取单元格文本内容

    QString QTableWidgetItem::text() const

    2、设置QTableWidget的表头

    创建一个QT Widget Application。

    1. ui.setupUi(this);
    2. //设置列数
    3. ui.tableWidget->setColumnCount(3);
    4. QTableWidgetItem *item0 = new QTableWidgetItem;
    5. QTableWidgetItem *item1 = new QTableWidgetItem;
    6. QTableWidgetItem *item2 = new QTableWidgetItem;
    7. //设置显示内容
    8. item0->setText("姓名");
    9. item1->setText("年龄");
    10. item2->setText("学号");
    11. //设置水平表头
    12. ui.tableWidget->setHorizontalHeaderItem(0, item0);
    13. ui.tableWidget->setHorizontalHeaderItem(1, item1);
    14. ui.tableWidget->setHorizontalHeaderItem(2, item2);

     效果

     3、初始化数据

    1. //初始化数据
    2. //添加数据时,一定要设置行数,否则数据不会展示出来
    3. ui.tableWidget->setRowCount(2);
    4. QTableWidgetItem* name0 = new QTableWidgetItem;
    5. QTableWidgetItem* name1 = new QTableWidgetItem;
    6. QTableWidgetItem* age0 = new QTableWidgetItem;
    7. QTableWidgetItem* age1 = new QTableWidgetItem;
    8. QTableWidgetItem* code0 = new QTableWidgetItem;
    9. QTableWidgetItem* code1 = new QTableWidgetItem;
    10. name0->setText("张大");
    11. name1->setText("张二");
    12. age0->setText("30");
    13. age1->setText("35");
    14. code0->setText("1234");
    15. code1->setText("1235");
    16. //为指定的某行或某列设置item
    17. ui.tableWidget->setItem(0, 0, name0);
    18. ui.tableWidget->setItem(1, 0, name1);
    19. ui.tableWidget->setItem(0, 1, age0);
    20. ui.tableWidget->setItem(1, 1, age1);
    21. ui.tableWidget->setItem(0, 2, code0);
    22. ui.tableWidget->setItem(1, 2, code1);

    效果

     4、插入数据

    1. //在末尾插入数据
    2. int curRow = ui.tableWidget->rowCount();
    3. ui.tableWidget->insertRow(curRow);
    4. QTableWidgetItem* name2 = new QTableWidgetItem;
    5. QTableWidgetItem* age2 = new QTableWidgetItem;
    6. QTableWidgetItem* code2 = new QTableWidgetItem;
    7. name2->setText("李大");
    8. age2->setText("34");
    9. code2->setText("1236");
    10. ui.tableWidget->setItem(curRow, 0, name2);
    11. ui.tableWidget->setItem(curRow, 1, age2);
    12. ui.tableWidget->setItem(curRow, 2, code2);

    效果

     5、遍历数据

    1. //遍历数据
    2. QTableWidgetItem* item;
    3. QString str;
    4. for (int i = 0; i < ui.tableWidget->rowCount(); i++) {
    5. for (int j = 0; j < ui.tableWidget->columnCount(); j++) {
    6. item = ui.tableWidget->item(i, j);
    7. str = str + item->text() + " ";
    8. }
    9. }
    10. qDebug() << "str = " << str;

    效果

    注意:

    1.cpp上方包含 #include

    2.将项目设置为 控制台输出

     6、常用信号

    单元格发生切换时,发射两个信号

    1. //currentRow, currentColumn 当前点击的单元格
    2. //previousRow, previousColumn 先前具有焦点的单元格
    3. void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
    4. //current 当前点击的单元格
    5. //previous 先前具有焦点的单元格
    6. void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)

    7、删除选中行

    1. int curRow = ui.tableWidget->currentRow();
    2. ui.tableWidget->removeRow(curRow);

    8、表头的设置
    8.1、设置每一行最后一个单元格不留空格

    1. //标头中最后一个可见段是否拉伸至所有可用空间
    2. ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    3. ui.tableWidget->horizontalHeader()->setStretchLastSection(false);

    直接看下效果

    8.2、设置自适应大小

    1. //标头根据“内容”自动调整大小
    2. ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);

    效果

    8.3、设置等宽

    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    效果

    9、其他常用设置
    9.1、获取行数列数

    int QTableWidget::rowCount() const

    int QTableWidget::columnCount() const

    9.2、获取当前单元格行号列号

    int QTableWidget::currentRow() const

    int QTableWidget::currentColumn() const

    9.3、设置单元格内容是否可编辑

    void setEditTriggers(EditTriggers triggers)
     
    9.4、设置选择方式是 单元格选择 还是行选择

    void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

    QAbstractItemView::SelectItems      //单元格选择模式

    QAbstractItemView::SelectRows      //行选择模式

    QAbstractItemView::SelectColumns //列选择模式
    Qt手册的使用

    上面介绍是QTableWidget较常用的一些方法,使用这些方法进行基本的数据展示和读取完全够用了,如果你要用到其他一些功能,可自行去查阅qt手册。

    参考原文链接:https://blog.csdn.net/new9232/article/details/122894697

  • 相关阅读:
    计算机毕业设计 | springboot养老院管理系统 老人社区管理(附源码)
    虹科示波器 | 汽车免拆检修 | 2012 款上汽大众帕萨特车 发动机偶尔无法起动
    【Redis】Redis 数据结构介绍
    BEANZ NFT 概览与数据分析
    我也来扒一扒python的内存回收机制!
    基于红外技术的交通灯设计
    Linux Makefile编写之静态库
    R语言ggplot2可视化:可视化多行文本内容并添加箭头和文本框、指定文本可视化内容右对齐(right alignment)
    VERYCLOUD睿鸿股份确认参展2024年ChinaJoy BTOB商务洽谈馆,期待与你相聚
    代码改成多线程,竟有 这些问题
  • 原文地址:https://blog.csdn.net/zxf347085420/article/details/133709485