2025年12月15日月曜日

Qtで最下行へスクロールする方法について

 Qtでは、行数が多くなると最下行へのスクロールが難しい仕様?のようです。

 実際のWigetの行サイズとかもあり、すべてを反映して正確なスクロール量を割り出すのが難しいという問題もある?ちょうど、エクセルなどで印刷イメージと編集画面で微妙にずれたりするのと同じ困難さかもしれませんが。

 こういうときは、泥臭い方法で、実際に繰り返し試しながらスクロール量を割り出すしかないのかもしれません。その旨、ChatGPTに伝えたところ、以下のコードを作ってくれました。なんとか、うまくいきました。

void KakeiboTable::scrollDown(){
    QScrollBar* bar = view->verticalScrollBar();
    if (!bar) return;
    int lastMax = -1;
    QTimer* timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, [=]() mutable {
        int curMax = bar->maximum();
        bar->setValue(curMax);
        if (curMax == lastMax) {
            timer->stop();
            timer->deleteLater();
        }
        lastMax = curMax;
    });
    timer->start(0);
}

0 件のコメント:

コメントを投稿