使用QTableView遇“QHeaderView不完全类型指针不允许”错误求助
解决QHeaderView不完全类型错误及表格列自适应问题
错误原因
出现pointer to incomplete class type "QHeaderView" is not allowed错误,核心有两个问题:
- 未包含
QHeaderView的头文件,Qt中仅使用类指针但不引入对应头文件时,编译器会将其识别为不完全类型 - 枚举值拼写错误:
QHeaderView::Strech应为QHeaderView::Stretch(多写了一个e)
修正后的代码
先在文件顶部添加头文件引用:
#include <QHeaderView>
如果想让指定列随窗口大小自动调整,比如让第2列(索引从0开始)拉伸填充剩余空间,代码修改如下:
QTableView* output_view = new QTableView(this); // 设置索引为1的列自适应拉伸 output_view->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); // 若要所有列都自适应窗口,改用这行 // output_view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
精细列宽控制示例
如果需要混合设置不同列的大小模式,比如部分列自适应内容、部分列拉伸、部分列固定宽度,可以这样写:
// 第0列自动适配内容宽度 output_view->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); // 第1列拉伸填充剩余空间 output_view->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); // 第2列固定宽度为100px output_view->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Fixed); output_view->setColumnWidth(2, 100);
内容的提问来源于stack exchange,提问作者mallocFreestyle
相关产品推荐
相关产品推荐

