2012-03-11 11 views
1

QPrintPreviewWidgetがあります。ユーザーの入力に基づいてコンテンツをプログラムで更新します。そうするときの問題は、スクロールバーが元の位置にとどまり、先頭に戻る必要があるということです。QPrintPreviewWidgetをプログラムでスクロールする方法は?

非常に大きな番号のscroll関数を使用しようとしましたが、何もしませんでした。なにか提案を?

編集:ここでは

はQtの創造主で、ダイアログの構造である:

enter image description here

その後、私はこのコードを使用してpreviewWidgetContainterレイアウトにQPrintPreviewWidgetを追加します。

previewWidget_ = new QPrintPreviewWidget(printer_, this); 
previewWidget_->fitToWidth(); 
ui->previewWidgetContainter->addWidget(previewWidget_); 

編集:

@tmpearceさんの提案に従ったが、うまくいかなかった。 showEvent私は現在のページを設定しましたが、何の効果もありません。私のコードは次のようなものです:

qDebug() << "Before" << previewWidget.currentPage(); 
previewWidget.setCurrentPage(0); 
qDebug() << "After" << previewWidget.currentPage(); 

そして、これの出力は常にそのようなものです:

Before 15 
After 15 

私はまた、他のさまざまな場所でページを設定しようとしたが、結果は常に同じです。それはQPrintPreviewWidgetのバグのように見えるので、今はあきらめます。とにかくおかげさまで提案に感謝します。

+0

問題を再現できる最小限のコードを入力できますか? – menjaraz

+0

間違えない限り、QPrintPreviewWidgetはウィジェットであり、スクロールバーを提供しません。 QPrintDialogや他のQAbstractScrollBarサブクラスに埋め込みましたか? – Koying

+0

@menjaraz、ダイアログにウィジェットを追加する方法を示すコードをいくつか追加しました。 –

答えて

0

あなたのコードの詳細についての詳細を知らなくても、私の提案は、明示的ウィジェットの内容を変更した後、this slot:QPrintPreviewWidget::setCurrentPage(int)

を呼び出すことであろう。

+0

ありがとう、私はそれを試みた(更新されたポストを参照)が動作しませんでした。 QPrintPreviewWidgetが期待どおりに動いていた場合や修正された場合は、それを行う方法でなければならないので、私はそれを受け入れられた回答としてマークします。 –

+0

@laurentページの他の値(1や2など)は何ですか? – tmpearce