void PlanManager::setTableFaultWidth(QTableWidget *tableWidget){
int columnCount = tableWidget->columnCount();
for (int i = 0; i < columnCount; ++i) {
// 获取表头文本
QString headerText = tableWidget->horizontalHeaderItem(i)->text();
//QFontMetricsa计算表头文本宽度
int headerWidth = QFontMetrics(tableWidget->font()).horizontalAdvance(headerText);
//遍历表头列的单元格,相比取最大的为该列宽度
int maxWidth=0;
for (int j = 0; j < tableWidget->rowCount(); ++j) {
// 获取单元格文本
QString cellText = tableWidget->item(j, i)->text();
int cellWidth = QFontMetrics(tableWidget->font()).horizontalAdvance(cellText);
int maxWidthTemp = qMax(headerWidth, cellWidth);
if(maxWidthTemp>maxWidth){
// +30可以作为一个额外的间距,避免太挤了
maxWidth=maxWidthTemp;
tableWidget->setColumnWidth(i, maxWidth + 30);
}
// 获取当前单元格的QTableWidgetItem
QTableWidgetItem *item = tableWidget->item(j, i);
if (item) {
// 设置单元格文本内容居中显示,水平和垂直方向都居中
item->setTextAlignment(Qt::AlignCenter);
}
}
}
}
QT设置qtablewidget表头和文本自适应宽度
于 2024-12-15 19:24:29 首次发布