要根据 Header 的长度来设置 QTableView 的列宽,可以使用以下方法:

  1. 获取 Header 的文本内容和长度。
QString headerText = tableView->horizontalHeader()->model()->headerData(section, Qt::Horizontal).toString();
int headerWidth = QFontMetrics(tableView->horizontalHeader()->font()).width(headerText);
  1. 设置列宽。
tableView->setColumnWidth(section, headerWidth);

完整的示例代码如下:

// 获取列数
int columnCount = tableView->horizontalHeader()->count();

// 遍历每一列
for (int section = 0; section < columnCount; ++section) {
    // 获取 Header 的文本内容和长度
    QString headerText = tableView->horizontalHeader()->model()->headerData(section, Qt::Horizontal).toString();
    int headerWidth = QFontMetrics(tableView->horizontalHeader()->font()).width(headerText);
    
    // 设置列宽
    tableView->setColumnWidth(section, headerWidth);
}

请注意,上述代码假设 tableView 是一个有效的 QTableView 对象,并且已经设置了水平 Header 的 model。如果没有设置 model,可以使用 setModel() 方法设置一个有效的 model

Qt QTableView: 根据 Header 长度设置列宽

原文地址: https://www.cveoy.top/t/topic/qDb3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录