0

私は、プロットを表す描画面(sin関数のような)(QWidgetの子)を備えたソフトウェアを実行しており、QScrollBarをQScrollAreaのように動作させたいと考えています。したがって、描画ウィジェットに 750 個のドットが表示され (プロットはドットで構成されています)、1000 個のドットがある場合、ScrollBar のスライダーが使用可能なスペースの 75% を埋めるようにします。

スクロールは含まれるウィジェットのサイズに比例するため、QScrollArea を使用できません。私の場合、スクロールは画面上のドット数に比例する必要があります。比率を取得する方法は知っていますが、QScrollBar を正しくセットアップする方法がわかりません

例: PageStep の値を編集しましたが、その仕組みがわかりません。[0,99] の範囲で pageStep を 100 に設定すると、QScrollBar の半分が塗りつぶされます。

私のインターフェース:

QWidget (Vertical Layout) //Main Widget
    Drawing Surface (Child of QWidget)
    QScrollBar (Horizontal)
4

2 に答える 2

2

さて、私はこれで何かできると思います:

http://harmattan-dev.nokia.com/docs/library/html/qt4/qscrollbar.html

ここに画像の説明を入力

ドキュメントの長さ、スクロール バーで使用される値の範囲、およびページ ステップの関係は、多くの一般的な状況では単純です。スクロール バーの値の範囲は、ドキュメントの長さを表す値から選択したページ ステップを差し引くことによって決定されます。このような場合、ドキュメントの長さ = maximum() - minimum() + pageStep() の式が役立ちます。

したがって、私の場合、長さはドットの数であり、minimum() を 0 に設定できます。したがって、図でわかるように、QScrollArea のようなことを行います。割合は、PercentageVisible = PageStep / Length であり、もう 1 つの式は、Length = PageStep + Max です。

2 つの方程式、2 つの欠損値 (PageStep と Maximum) と 2 つの既知の値 (PercentageVisible と Length) があります。

例: 1024 個のドットがありますが、そのうちの 75% しか表示されません。

0.75 = ページステップ / 1024 ----------> ページステップ = 768

1024 = 最大 + 768 ----------------> 最大 = 256

ソフトウェアで試してみると、うまくいきます。ほとんどの場合 QScrollArea が仕事をするので、これを再現する必要がある人はそれほど多くないでしょう。

たとえば、次のコードはサイズ変更イベントに反応するスロットにあります。

ui.sbarRange->setPageStep(u64SampleCount * dRatio);
ui.sbarRange->setMaximum(u64SampleCount - ui.sbarRange->pageStep());
于 2013-07-03T13:42:13.780 に答える