我有一个使用QSqlQueryModel的QTableView (它从SQLite获取数据)。
有一个名为MiniItemDelegate的QStyledItemDelegate子类,我将其用作这些项的委托。我像这样设置了一个sizeHint()方法:
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);发布于 2013-05-29 23:01:32
仅当调用QTableView::resizeRowsToContents、QTableView::resizeRowToContents、QTableView::resizeColumnsToContents和QTableView::resizeColumnToContents时,QStyledItemDelegate::sizeHint才有用。或使用
QHeaderView* headerView = tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);发布于 2012-03-21 19:24:41
你有没有尝试过:setColumnWidth或horizontalHeader()->setResizeMode(QHeaderView::Fixed)和setRowHeight?
发布于 2016-06-27 19:25:03
(应记功劳的地方)在@HostileFork关于Qt Forum discussion的评论中,有一个评论线程,在该线程中,用户mikhailt提供了一个good solution。
verticalHeader有一个可以调整的DefaultSectionSize属性。垂直标题(表格左侧的标签)是否实际显示并不重要,大小仍将使用。
ui->PList_tableView->verticalHeader()->setDefaultSectionSize(34);这解决了我使用Qt5.6的问题,并使我不必单独调整每个数据行的高度,或者引起表的大小调整。
根据我发现它的评论线程的年龄,这在Qt4中也是有效的。
https://stackoverflow.com/questions/9782553
复制相似问题