QT设置qtablewidget表头和文本自适应宽度

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);
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值