我使用QTableView QSqlQueryModel(它从SQLite中获取数据)。
有一个名为MiniItemDelegate
的{{3}}子类,我将其用作项目的委托。我设置了QStyledItemDelegate这样的方法:
QSize MiniItemDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
// just for testing...breakpoint shows this line never gets called
return QSize(256,256);
}
我不确定为什么在运行以下代码时不会调用此方法:
m_pMiniItemDelegate = new MiniItemDelegate(this);
ui->PList_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->PList_tableView->setSelectionMode(QAbstractItemView::SingleSelection);
ui->PList_tableView->setItemDelegate(m_pMiniItemDelegate);
ui->PList_tableView->setAlternatingRowColors(true);
ui->PList_tableView->setModel(ListMiniSqlModel::instance());
这也不起作用:
ui->PList_tableView->resizeColumnsToContents();
ui->PList_tableView->resizeRowsToContents();
这也不是:
QHeaderView* headerView = ui->PList_tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);
答案 0 :(得分:3)
QStyledItemDelegate :: sizeHint仅在调用QTableView :: resizeRowsToContents,QTableView :: resizeRowToContents,QTableView :: resizeColumnsToContents和QTableView :: resizeColumnToContents时才有用。或使用
QHeaderView* headerView = tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);
答案 1 :(得分:1)
您是否尝试过: setColumnWidth 或 setRowHeight 和 horizontalHeader() - > setResizeMode(QHeaderView :: Fixed)?
答案 2 :(得分:0)
(信用到期的信用。) 在@ HostileFork关于Qt Forum discussion的评论中,有评论主题。在该线程中,用户 mikhailt 提供good solution。
verticalHeader 具有可以调整的 DefaultSectionSize 属性。垂直标题(表格左侧的标签)是否实际显示无关紧要,仍然会使用大小。
ui->PList_tableView->verticalHeader()->setDefaultSectionSize(34);
这解决了我使用Qt 5.6的问题,并使我无法分别调整每个数据行的高度,或者在桌面上调整大小。
根据我发现它的评论主题的年龄,这也已经在Qt 4中工作了。