カスタム デリゲートの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でセルのフォーカスをキャッチする方法は?