我在自定义委托的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中捕捉单元格焦点?