私はPyQt4とpython-popplerqt4を使用してPDFリーダーに取り組んでいます。PDFページ(QPixmaps)はQLablesに表示され、QFrameに垂直に配置されます。QFrameはQScrollAreaに配置されます。
QMainWindow
|_ QScrollArea
|_ QFrame (Document: stretch)
|_ QLabel (Page: fixed size)
| |_ QPixmap (stretch)
|_ QLabel
| |_ QPixmap
|_ etc.
ドキュメントのサイズは、QLabelの固定サイズによって決まります。QPixmapはそれに応じて拡大するように設定されており、ページ周辺のQFrameは自然にそのサイズを調整します。
ズームを呼び出すと、ページ(QLabels)のサイズが1つずつ変更されQLabel.setFixedSize()
ます。ただし、その効果は期待外れです。ドキュメントのサイズを変更すると、ぎこちなくちらつきます。EvinceまたはMendeleyのズームインは、比較すると非常にスムーズです。
QFrame.hide()
スケーリングの前と後の呼び出しがQFrame.show()
役立つことを他の場所で読んだことがあります。確かにそれは小さな文書のために行います。ただし、たとえば約700ページのPDFに適用すると、1秒以上空白のQScrollAreaを意味します。良くない。
QScrollAreaでドキュメントを拡大縮小して、スムーズなズーム効果を生成するにはどうすればよいですか?
PS: Poppler.Pagesの画像は、表示されているQLabel受信者に対してのみ描画されます。つまり、700ページのドキュメントのサイズ変更には、多くの画像のサイズ変更は含まれません。実際には、最大で2〜4枚の画像のサイズが変更されます(解像度が高くなるほど、解像度は低くなります)。Documentオブジェクトのサイズ変更は、ほとんどの場合空のQLabelのサイズ変更のみで構成されます。