前の記事では、我々は最初のインターフェースのPDFリーダーを実現しました。今回は、新しい読み取り機能は、基本的なフリップやズームなどの操作を実現することができます。しかし、唯一であることは、同時に本を読むことができます。
図は、以下の効果を示しています。
今、私は主な新機能の中に、降りてきます:
タブ
私たちは1つのウィンドウで複数のページを表示することができQTabWidget。このタブのスタックについては、ページがself.tableとして表示され、それは最初のインターフェースです
self.table(QTableWidget) - > self.tabwidget(QTabWidge)。
新しいタブ:あなたが読んで起動するたびに、新しいタブ、ファイル名の名前を作成します。
その中で、我々は[ホーム]タブを尋ね、そのタブスタックは閉じられません。
QScrollArea、QScrollArea支持ホイールの操作に対応したインタフェースタブページ領域を読み取ります。それは我々がPDFのページサイズがQScrollAreaサイズを超えたスケールならば、我々はページを閲覧することができるように、それは自動的に、ローラーを表示されます、です。これは、MyArea QScrollAreaクラスがオーバーロードされ、反転し、サポートおよびその他の操作をズームするショートカットをバインドします。
ピックスマップ - >ラベル - >エリア(MyArea) - > VBOX(QVBoxLayout) - >タブ(QWidgetの) - > self.tabwidget(QTabWidge)。
私たちはどのようにMyAreaこのクラスの定義を見てみましょう:
MyArea(QScrollArea)
ここでは、self.widgetコールによって、すなわちクラスのインスタンスメソッドのリーダーを自己パラメータリーダーメインクラスを受信するためのinitメソッドを定義します。
init_action機能では、我々は4 QShortCut例を構築し、ショートカットが縮小、拡大、前のページの次の動作を実現するためにサポートされています。
以下では、ズーム、フリップ機能の具体的な実現を紹介します:
ズーム機能
ページサイズを格納するために使用self.sizeは、それがself.sizeに応じてズーム機能を実現することであるself.page。
ピックスマップ - >ラベル - >エリア(MyArea) - > VBOX(QVBoxLayout) - >タブ(QWidgetの) - > self.tabwidget(QTabWidge)。
タブタブの取得対象は、レイアウトオブジェクトは、直接地域のラベルコントロールを変更し、VBOX、ウィジェット取得対象領域を取得します。
その後、我々はフリップ機能を実装する方法を紹介します
フリップ機能
今回は、PDFリーダーのみが同時に一冊の本、ライン上のself.current_pageによって制御されるので、ちょうどフリップ機能を読むことができます実現しています。
総ページ数self.doc.pageCount、現在のページは、負または総ページ数を超えることはできません。あなたは、変更のself.current_pageを行った後、self.set_page操作が直接地域のラベルコントロールを変更する実行することができます。