【发布时间】:2014-08-04 14:52:12
【问题描述】:
自定义委托的 sizeHint 有一些问题: 我想在它的焦点上“展开”单元格(与这个单元格一起排);否则返回默认大小; QTableVew 连接以在鼠标按下时调整行的大小:
connect(m_scheduleView, &QTableView::pressed, m_scheduleView, &QTableView::resizeRowsToContents);
QSize DBScheduleItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (option.state & QStyle::State_HasFocus) {
... // this block never executes;
return // some calculated size;
}
return QSize(width, height); // default size;
}
条件块中的代码从未执行过,但委托的 paint() 上的相同条件可以正常执行:
void DBScheduleItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (option.state & QStyle::State_HasFocus)
painter->fillRect(...);
}
那么,如何在 sizeHint 中捕捉单元格焦点?
【问题讨论】:
-
if (option.state & QStyle::State_Selected)有帮助吗? -
@Nejat ,我试过了,没有帮助
标签: qt delegates model-view sizehint