1

現在、ユーザーが部分的にしか表示されていないセルをクリックすると、セルが完全に表示されるようにウィンドウが自動的にスクロールします。これを行うテーブルを停止する方法はありますか? ありがとう

4

2 に答える 2

9

この動作は、次の方法で簡単に無効にできます。

ui->tableWidget->setAutoScroll(false);

alexisdmの答えは別の問題を扱っています。テーブルに新しい行を段階的に追加していて、現在の垂直スクロール位置を維持したいとします。私はこの 2 番目の問題に取り組んでおり、alexisdmの答えは有望に思えます。

于 2013-10-03T13:20:46.277 に答える
2

スクロールは、インデックスを使用しQAbstractItemViewて仮想関数scrollToをヒントとして呼び出すことによって行われEnsureVisibleます。プライベートタイマーを介して行われるため、呼び出しを防ぐことはできませんが、関数のscrollTo機能を変更することはできます。

void TableWidget::scrollTo(const QModelIndex &index, ScrollHint hint)
{
    if(hint == QAbstractItemView::EnsureVisible)
        return;
    QTableWidget::scrollTo(index, hint);
}

また、手動でアイテムにスクロールできるようにするには、を呼び出す別のメンバー関数を作成できますQTableWidget::scrollTo

于 2011-08-31T14:24:29.933 に答える