QTableWidget的简单用法笔记。

使用QTableWidget主要合以下三个类打交道:

QTableWidgetItem,代表表格中的单元格,可以设置文字字体等;

QTableWidget,代表表格,复制管理表格中的item;

QHeaderView类代表表格的表头,可以对表头的样式做一系列设置。水平表头和垂直表头分别可以通过QTableWidget对象的horizontalHeader();和verticalHeader();获得

假设有以下几个对象的指针:


要在表格的某个单元格添加文字,需要往表格中添加单元格,再设置单元格文字,新创建的表格里面是没有item对象的,需要自己创建。


QStringList list;

QTableWidget* table = new QTableWidget;

list<<QStringLiteral("文字1")<<QStringLiteral("文字2")<<QStringLiteral("文字3");

table->setHorizontalHeaderLabels(list); //设置水平表头

table->setColCount(3);

table->setRowCount(6);

QTableWidgetItem* item = new QTableWidgetItem;

table->setText(QStringLiteral("文字"));
table->setItem(0,0,item); //设置表格中的内容



1.把某个单元格设置为widget,可以是QFrame,QComboBox,通过这个可以在某个单元格设置下拉框,单选按钮等其他控件。

table->setCellWidget(row,col,widget);


2.设置表格不可编辑

可以单独设置某个单元格,item->setFlags(item->flags()&(~Qt::ItemIsEditable));

也可以对表格整体进行设置,table->setEditTriggers(QAbstractItemView::NoEditTriggers);


3.列宽分配

(1).表格窗口比表格宽时,拉伸最后一列填满窗口的宽度。

table->horizontalHeader()->setStretchLastSection(true);//只有调用了这个表格窗口才会被填满

(2).按单元格中的内容长度分配宽度

table->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents);

(3).平均分配列宽

table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

4.合并单元格

table->setSpan(row,col,row_num,col_num);前两个参数指定合并起始单元格,为起始单元格的行号列号,后两个为从起始位置开始合并的行数和列数。行列数包含起始的一格。


5.设置单元格中的文字格式

QFont font //控制文字格式的对象

font.setBold(true);//加粗

font.setPixelSize(14);//字号

item->setFont(font);

item->setTextAlignment(Qt::AlignCenter);//居中对齐


QTableWidget是PyQt5中的一个表格控件,可用于显示和编辑表格数据。以下是QTableWidget的基本用法: 1. 创建QTableWidget对象: ```python tableWidget = QTableWidget() ``` 2. 设置表格的行数和列数: ```python tableWidget.setRowCount(rows) tableWidget.setColumnCount(columns) ``` 3. 设置表格的表头: ```python tableWidget.setHorizontalHeaderLabels(horizontal_labels) tableWidget.setVerticalHeaderLabels(vertical_labels) ``` 4. 设置表格的单元格内容: ```python tableWidget.setItem(row_index, column_index, QTableWidgetItem(cell_value)) ``` 5. 获取表格的单元格内容: ```python cell_value = tableWidget.item(row_index, column_index).text() ``` 6. 设置表格的选择模式: ```python tableWidget.setSelectionMode(QAbstractItemView.SingleSelection) # 单选模式 tableWidget.setSelectionMode(QAbstractItemView.MultiSelection) # 多选模式 tableWidget.setSelectionMode(QAbstractItemView.ExtendedSelection) # 扩展选择模式 ``` 7. 设置表格的编辑模式: ```python tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) # 禁止编辑 tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked) # 双击编辑 tableWidget.setEditTriggers(QAbstractItemView.SelectedClicked) # 单击编辑 tableWidget.setEditTriggers(QAbstractItemView.CurrentChanged) # 切换编辑 ``` 8. 设置表格的行高和列宽: ```python tableWidget.setRowHeight(row_index, height) # 设置行高 tableWidget.setColumnWidth(column_index, width) # 设置列宽 ``` 9. 添加行和删除行: ```python tableWidget.insertRow(row_index) # 添加行 tableWidget.removeRow(row_index) # 删除行 ``` 10. 保存表格数据到文件: ```python with open('data.csv', 'w') as file: writer = csv.writer(file) for row_index in range(tableWidget.rowCount()): row_data = [] for column_index in range(tableWidget.columnCount()): cell_value = tableWidget.item(row_index, column_index).text() row_data.append(cell_value) writer.writerow(row_data) ``` 11. 从文件加载表格数据: ```python with open('data.csv', 'r') as file: reader = csv.reader(file) for row_index, row_data in enumerate(reader): for column_index, cell_value in enumerate(row_data): item = QTableWidgetItem(cell_value) tableWidget.setItem(row_index, column_index, item) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值