QTableWidget
区别
QtableWidget 继承自 QtableView.QtableView 有一个setModel的函数设定model, QtableWidget是用的默认的。
“The QTableWidget class provides an item-based table view with a default model.”
前者更易用,后者可以自定义model的操作,可以实现更灵活的操作,而且modle、view 分开操作,代码更清晰、更好扩展。
如果数据简单,用前者,数据复杂、需要操作多,用后者,拿不准就用后者,反正QtableWidget就相当于 view + model。
快速设置QTableWidget表头内容
QStringList headers;
headers << QStringLiteral("id") << QStringLiteral("名称") << QStringLiteral("价格");
ui.tableWidget->setHorizontalHeaderLabels(headers);
表头列宽高的自动适应
-
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
这个实现各列平均分配,并且占满整个tableview; -
ui->tableView->horizontalHeader()->setStretchLastSection(true);这个可以自适应窗口的变大变小,但多出来的空间全给最后一列 -
ui->tableView->horizontalHeader()>setSectionResizeMode(QHeaderView::ResizeToContents);根据内容的长短自动调整列宽
行高宽设置
ui->tableView->resizeRowsToContents();//所有行高度自适应
ui->tableView->resizeColumnsToContents();//所有行宽度自适应
---
ui->tableView->resizeRowsToContents();//所有行高度自适应
void QHeaderView::setResizeContentsPrecision(int precision);
//参考precision行来自动适应
添加表格内容
//添加内容之前必须设置行、列数,不然不显示
ui->tableWidget->setRowCount(2); //设置行数为2
ui->tableWidget->setColumnCount(4); //设置列数为4
QStringList header;
header << "Name" << "Flow" << "Distance" << "Time";
ui->tableWidget->setHorizontalHeaderLabels(header);
//这里必须是new变量,并且delete之后就不显示了。
for(int i = 0; i < vec.count(); i++)
{
ui->tableWidget->setItem(i,0,new QTableWidgetItem(vec[i].getName()));
ui->tableWidget->setItem(i,1,new QTableWidgetItem(vec[i].getFlow()));
ui->tableWidget->setItem(i,2,new QTableWidgetItem(vec[i].getDistance()));
ui->tableWidget->setItem(i,3,new QTableWidgetItem(vec[i].getTime()));
}
QTableWidget释放item内存
https://blog.csdn.net/u011731378/article/details/80348310
https://blog.csdn.net/fanx021/article/details/88858219?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
ui.tableWidget->clearContents();
other
table->setFrameShape(QFrame::NoFrame); //设置无边框
table->setShowGrid(false); //设置不显示格子线
table->verticalHeader()->setVisible(false); //设置垂直头不可见,即左边序号不见
table->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置表格内容不可编辑
比较实用的设置: https://blog.csdn.net/WiccWang/article/details/82154003

浙公网安备 33010602011771号