首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未为QTableView行调用QStyledItemDelegate的sizeHint方法

未为QTableView行调用QStyledItemDelegate的sizeHint方法
EN

Stack Overflow用户
提问于 2012-03-20 15:00:59
回答 3查看 3.2K关注 0票数 4

我有一个使用QSqlQueryModelQTableView (它从SQLite获取数据)。

有一个名为MiniItemDelegateQStyledItemDelegate子类,我将其用作这些项的委托。我像这样设置了一个sizeHint()方法:

代码语言:javascript
复制
QSize MiniItemDelegate::sizeHint(const QStyleOptionViewItem &option,
                                 const QModelIndex &index) const
{
    // just for testing...breakpoint shows this line never gets called
    return QSize(256,256);  
}

当我运行以下代码时,我不确定为什么这个方法没有被调用:

代码语言:javascript
复制
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());

这也不起作用:

代码语言:javascript
复制
ui->PList_tableView->resizeColumnsToContents();
ui->PList_tableView->resizeRowsToContents();

这也不是:

代码语言:javascript
复制
QHeaderView* headerView = ui->PList_tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-29 23:01:32

仅当调用QTableView::resizeRowsToContents、QTableView::resizeRowToContents、QTableView::resizeColumnsToContents和QTableView::resizeColumnToContents时,QStyledItemDelegate::sizeHint才有用。或使用

代码语言:javascript
复制
QHeaderView* headerView = tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);
票数 3
EN

Stack Overflow用户

发布于 2012-03-21 19:24:41

你有没有尝试过:setColumnWidthhorizontalHeader()->setResizeMode(QHeaderView::Fixed)setRowHeight

票数 1
EN

Stack Overflow用户

发布于 2016-06-27 19:25:03

(应记功劳的地方)在@HostileFork关于Qt Forum discussion的评论中,有一个评论线程,在该线程中,用户mikhailt提供了一个good solution

verticalHeader有一个可以调整的DefaultSectionSize属性。垂直标题(表格左侧的标签)是否实际显示并不重要,大小仍将使用。

代码语言:javascript
复制
ui->PList_tableView->verticalHeader()->setDefaultSectionSize(34);

这解决了我使用Qt5.6的问题,并使我不必单独调整每个数据行的高度,或者引起表的大小调整。

根据我发现它的评论线程的年龄,这在Qt4中也是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9782553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档