Qt 如何更改TableView单元格焦点上的代理大小点?

Qt 如何更改TableView单元格焦点上的代理大小点?,qt,delegates,model-view,sizehint,Qt,Delegates,Model View,Sizehint,我在自定义代理的sizeHint方面遇到了一些问题: 我想把这个单元格放在焦点上展开单元格行;否则返回默认大小; QTableVew已连接,可在鼠标按下时调整行的大小: connect(m_scheduleView, &QTableView::pressed, m_scheduleView, &QTableView::resizeRowsToContents); QSize DBScheduleItemDelegate::sizeHint(const QStyleOptionV

我在自定义代理的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; 
}
条件块中的代码从未执行过,但代理绘制上的相同条件正确执行:

void DBScheduleItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    if (option.state & QStyle::State_HasFocus)
        painter->fillRect(...);
}
那么,如何在sizeHint中捕捉单元格焦点呢?

这与


Qt Creator本身的源代码(特别是TaskView小部件)中也使用了一种可能的解决方法,即通过连接QItemSelectionModel来跟踪当前/选定的项目。

Does if option.state&QStyle::state_selected help?@Nejat,我已经尝试过,没有帮助