在使用QTableView中,使用setHorizontalHeaderLabels()方法设置表头信息后,马上填充表格内容,然后通过setColumnWidth()设置列宽,最后使用update()更新界面,发现setColumnWidth()的实际效果没有。代码如下:
QStringList titles;
QTableView tableView = new QTableView();
QStandardItemModel *pItemModel = new QStandardItemModel();
tableView->setModel(pItemModel);
// 设置titles内容
// ...
pItemModel->setHorizontalHeaderLabels(titles);
// 添充item
// tableView->setItem(); ...
// 设置列宽
for (int i = 0; i < titles.count(); ++i) {
tableView->setColumnWidth(i, 100);
}
// 强制更新界面
update();
解决方案:在setHorizontalHeaderLabels()方法之后强制更新界面。代码如下:
QStringList titles;
QTableView tableView = new QTableView();
QStandardItemModel *pItemModel = new QStandardItemModel();
tableView->setModel(pItemModel);
// 设置titles内容
// ...
pItemModel->setHorizontalHeaderLabels(titles);
// 强制更新界面
update();
// 添充item
// tableView->setItem(); ...
// 设置列宽
for (int i = 0; i < titles.count(); ++i) {
tableView->setColumnWidth(i, 100);
}
// 强制更新界面
update();
望能者看到该贴后能给出具体回答。