モデルを更新した直後に QListView スクロールバーの値を設定しようとしています。問題は、その時点でスクロールバーが適切に設定されていないため、そのmaximum
値が正しくないことです。これは、値を設定すると、この (誤った) 最大値を超えることは決してないことを意味します。他の場所にいくつかのステートメントを追加すると、しばらくqDebug
して最大値が再び正しいことがわかります。
どうにかしてスクロールバーまたはビューを強制的に更新する必要があると思いますが、さまざまなことを試しました - updateGeometry
、repaint
、update
、setFlow
、など。
私ができることについて何か提案はありますか?以下は私の現在のコードです:
int previousScrollValue = cardList_->verticalScrollBar()->value();
qDebug() << "Before" << previousScrollValue;
CardListModel* model = new CardListModel(deck->id());
cardList_->setModel(model);
cardList_->verticalScrollBar()->setValue(previousScrollValue);
qDebug() << "After" << cardList_->verticalScrollBar()->value(); // Wrong value
qDebug() << "Max" << cardList_->verticalScrollBar()->maximum(); // Wrong value