2012-01-02 50 views
0

タイマーに基づいてQListWidgetをクリアして再設定しています。その都度、リストウィジェットがスクロールして先頭に戻ります。リストのスクロール位置を見つけて、アイテムを追加した後にもう一度セットすることはできますか?QListWidgetでスクロールバーを制御する方法

答えて

0

リストのスクロール位置を見つけて、アイテムを追加した後でもう一度設定することはできますか?

currentRow propertyを使用すると、現在の行を取得/設定することができます。 currentRowChanged signalに登録するのが最善です。

+0

あなたは私にいくつかのコード例を与えることによって、このことを説明することができます。.. – user1056481

+0

使用[接続](http://developer.qt.nokia.com/doc/qt-4.8/qobject.html#接続)して信号を接続します。非常に新しい場合は、[qtチュートリアル](http://doc.qt.nokia.com/4.7/tutorials.html)から始めてください。 (申し訳ありませんが、私は現在使用しているPC上のコンパイラとQtライブラリへのアクセスを持っていません) –

+0

私はスクロールバーの変数を作成する必要があります..これまでスクロールバーのすべての設定はデフォルト設定です.. – user1056481

5

QListWidgetQAbstractScrollAreaです。水平スクロールバーと垂直スクロールバーがあり、QAbstractScrollArea::horizontalScrollBar()QAbstractSrollArea::verticalScrollBar()を使用して取得できます。両方ともQScrollBarを返します。

することができます、手動でスクロールバーの値を設定するには:

QScrollBar *vb = listWidget->verticalScrollBar(); 
int oldValue = vb->value(); 
//doSomething() 
vb->setValue(oldValue); 
+0

これを試しましたが、スクロールバーが先頭に移動します – user1056481

1

私は同じ問題に会って、私は、リスト項目のプロパティを変更したり、「takeItem」を使用するたびに、スクロールバーが所定の位置にジャンプ上の近くに。 "setLayoutMode"と "setBatchSize"をQListに追加した後に解決されましたか?これらの2つのメソッドがコードで使用されている場合は、それらを削除しようとします。 QT延長することは非常に新しいですと

関連する問題