QT tableWidget详细分析

一.定义

QTableWidget是一个用于显示表格数据的Qt控件,它是一个基于Qt Model/View框架的视图组件。QTableWidget提供了一种简单的方式来展示和编辑表格数据,用户可以通过添加行、列和单元格来构建一个完整的数据表格。

下面是一些QTableWidget的主要特点和功能:

  1. 显示数据:QTableWidget可以显示表格形式的数据,用户可以通过设置行数、列数和单元格内容来展示具体的数据。

  2. 编辑数据:用户可以在QTableWidget中直接编辑单元格的内容,以便对数据进行修改。

  3. 行列操作:用户可以通过API添加、删除、移动行列,来灵活地管理数据表格的结构。

  4. 布局调整:用户可以通过设置行高、列宽、单元格合并等方式来调整数据表格的布局。

  5. 选中操作:用户可以通过鼠标或键盘操作来选中单元格、行或列,以便进行相关的操作。

  6. 样式设置:用户可以通过设置表格的样式、颜色、字体等属性来美化表格的显示效果。

  7. 数据导出:QTableWidget支持将表格数据导出为文件(如CSV格式),以便用户进行其他处理或分享数据。

二.代码示例

#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建一个QTableWidget对象,并设置行数和列数
    QTableWidget tableWidget;
    tableWidget.setRowCount(3);
    tableWidget.setColumnCount(2);

    // 设置表头
    QStringList headers;
    headers << "Name" << "Age";
    tableWidget.setHorizontalHeaderLabels(headers);

    // 向表格中添加数据
    QTableWidgetItem *item1 = new QTableWidgetItem("Alice");
    tableWidget.setItem(0, 0, item1);
    QTableWidgetItem *item2 = new QTableWidgetItem("25");
    tableWidget.setItem(0, 1, item2);

    QTableWidgetItem *item3 = new QTableWidgetItem("Bob");
    tableWidget.setItem(1, 0, item3);
    QTableWidgetItem *item4 = new QTableWidgetItem("30");
    tableWidget.setItem(1, 1, item4);

    QTableWidgetItem *item5 = new QTableWidgetItem("Eve");
    tableWidget.setItem(2, 0, item5);
    QTableWidgetItem *item6 = new QTableWidgetItem("22");
    tableWidget.setItem(2, 1, item6);

    // 显示表格
    tableWidget.show();

    return app.exec();
}

三.部分功能介绍

1.设置行高

#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建一个QTableWidget对象,并设置行数和列数
    QTableWidget tableWidget;
    tableWidget.setRowCount(3);
    tableWidget.setColumnCount(2);

    // 设置表格每一行的高度
    tableWidget.verticalHeader()->setDefaultSectionSize(50); // 设置行高为50像素
    
    // 添加数据到表格中

    // 显示表格
    tableWidget.show();

    return app.exec();
}

2.设置自适应大小

setSizeAdjustPolicy()方法是用于设置QTableWidget的自适应策略的方法。可以通过该方法设置表格的大小自适应方式,以确保表格可以根据内容调整大小。

以下是该方法的常用参数:

  • QTableWidget::AdjustToContents:根据内容自动调整表格大小。
  • QTableWidget::AdjustToContentsOnFirstShow:第一次显示时根据内容自动调整表格大小。
  • QTableWidget::AdjustToContentsOnResize:调整表格大小以适应内容变化。
  • QTableWidget::Fixed:固定大小。
#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建一个QTableWidget对象,并设置行数和列数
    QTableWidget tableWidget;
    tableWidget.setRowCount(3);
    tableWidget.setColumnCount(2);

    // 设置表格每一行的高度
    tableWidget.verticalHeader()->setDefaultSectionSize(50); // 设置行高为50像素

    // 设置表格的自适应策略
    tableWidget.setSizeAdjustPolicy(QTableWidget::AdjustToContents);

    // 添加数据到表格中

    // 显示表格
    tableWidget.show();

    return app.exec();
}

3.插入数据

Qt中的 QTableWidget 类提供了方便的方法来插入和操作表格中的行和列,而您无需手动设置行号。当您向 QTableWidget 插入行时,会自动更新当前的行号,并且您可以通过该行号来访问和操作该行的数据。

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    // 创建 QTableWidget
    QTableWidget tableWidget;
    tableWidget.setColumnCount(2);
    
    // 插入一行并设置数据
    tableWidget.insertRow(0);
    tableWidget.setItem(0, 0, new QTableWidgetItem("Row 1, Column 1"));
    tableWidget.setItem(0, 1, new QTableWidgetItem("Row 1, Column 2"));
    
    // 插入另一行并设置数据
    tableWidget.insertRow(1);
    tableWidget.setItem(1, 0, new QTableWidgetItem("Row 2, Column 1"));
    tableWidget.setItem(1, 1, new QTableWidgetItem("Row 2, Column 2"));
    
    // 显示 QTableWidget
    tableWidget.show();
    
    return app.exec();
}

4.设置文字居中

要设置表格单元格中的文字居中,可以使用setAlignment()方法来指定单元格的对齐方式。

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt

app = QApplication([])

tableWidget = QTableWidget()
tableWidget.setRowCount(2)
tableWidget.setColumnCount(2)

tableWidget.setItem(0, 0, QTableWidgetItem("Item 1"))
tableWidget.setItem(0, 1, QTableWidgetItem("Item 2"))
tableWidget.setItem(1, 0, QTableWidgetItem("Item 3"))
tableWidget.setItem(1, 1, QTableWidgetItem("Item 4"))

# 设置单元格文字居中
for i in range(tableWidget.rowCount()):
    for j in range(tableWidget.columnCount()):
        item = tableWidget.item(i, j)
        item.setTextAlignment(Qt.AlignCenter)

widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableWidget)
widget.setLayout(layout)

widget.show()

app.exec_()

5.设置是否可编辑

要设置Qt TableWidget中的单元格为可编辑或不可编辑模式,可以使用setEditTriggers()方法。以下是一个示例代码,演示如何设置单元格为可编辑

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget, QAbstractItemView

app = QApplication([])

tableWidget = QTableWidget()
tableWidget.setRowCount(2)
tableWidget.setColumnCount(2)

tableWidget.setItem(0, 0, QTableWidgetItem("Editable"))
tableWidget.setItem(0, 1, QTableWidgetItem("Not Editable"))
tableWidget.setItem(1, 0, QTableWidgetItem("Editable"))
tableWidget.setItem(1, 1, QTableWidgetItem("Not Editable"))

# 设置第一列为可编辑模式,第二列为不可编辑模式
tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked)  # 设置双击可编辑

widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableWidget)
widget.setLayout(layout)

widget.show()

app.exec_()

 

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值