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

posted @ 2020-03-02 15:24  friedCoder  阅读(536)  评论(0)    收藏  举报