c++ QT tableView设置自定义标头后不显示标头标签



我正在使用一个tableView,并试图实现一些尺寸样式。

代码:

// Setup table header items 
Views::TeamTableHeaderView *header = new Views::TeamTableHeaderView(Qt::Horizontal);
ui->tableView->setHorizontalHeader(header);
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->tableView->horizontalHeader()->setStretchLastSection(true);
ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter | (Qt::Alignment)Qt::TextWordWrap);
for(auto& tableModel : entitlementLicenseModelMap)
{
tableModel->setHorizontalHeaderLabels({"PRODUCT", "TOTAL SEATS", "VALID UNTIL"});
}

在表中根本不显示任何头信息。当对setHorizontalHeader(header)的调用被移除时,头部显示良好。然而,标题太薄而无法在不切断文本的情况下呈现文本,因此我需要一个自定义标题(TeamTableHeaderView)来实现sizeHint()以使其更高。

我试过在前后移动标题标签的设置,但问题是标题根本不显示,甚至没有默认的"1"2";"3";标签。

一些信息:

  • 此代码在表模型中(成功)填充所有数据后执行。
  • tableView是一个标准的QTableView
  • TeamTableHeaderView是继承自QHeaderView的自定义类型,它只实现了sizeHint()。目前它只返回QHeaderView::sizeHint()。这个类还没有什么特别的。
  • 标题licensemodelmap有点奇怪,但我认为与这个问题无关。整个for循环可以看作是设置表格模型。这个表模型是QStandardItemModel。
  • 在代码的前面,一个自定义委托被设置为模型。但是,此委托尚未实现。它只是为了以后做一些绘画的东西。它继承自QStyledItemDelegate,并且只实现paint函数,该函数目前只保存画家,调用QStyledItemDelegate::paint(…)然后恢复画家。我不认为这个委托是相关的,但很高兴被纠正。

对于遇到这种情况的其他人,您只需手动调用:

header->setVisible(true)

为什么头文件在没有指定的情况下默认是可见的?

相关内容

  • 没有找到相关文章

最新更新