0

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

4

1 に答える 1