QStyledItemDelegate's sizeHint 方法未为 QTableView 行调用
QStyledItemDelegate's sizeHint method not called for a QTableView row
我有一个使用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);
QStyledItemDelegate::sizeHint仅在调用QTableView::resizeRowsToContents、QTableView:resizeRowToContents、QableView::resizeColumnsToContent和QTableView:resizeColumnToContents时有用。或使用
QHeaderView* headerView = tableView->horizontalHeader();
headerView->setResizeMode(QHeaderView::ResizeToContents);
您是否尝试过:setColumnWidth或setRowHeight和horizontalHeader()->setResizeMode(QHeaderView::Fixed)?
(到期信贷。)在@HostileFork关于Qt论坛讨论的评论中,有一条评论。在该线程中,用户mikhailt提供了一个很好的解决方案。
verticalHeader具有可调整的DefaultSectionSize属性。垂直标题(表左侧的标签)是否实际显示并不重要,大小仍将使用。
ui->PList_tableView->verticalHeader()->setDefaultSectionSize(34);
这正好解决了我在Qt 5.6中的问题,使我不用单独调整每个数据行的高度,也不用在表上调整大小。
根据我发现的评论线程的年龄,这也已经在Qt4中运行了。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 如何用参数值调用函数(仅在运行时已知)
- std::cout.imbue()多重调用
- QStyledItemDelegate's sizeHint 方法未为 QTableView 行调用