diff --git a/glabels/MainWindow.cpp b/glabels/MainWindow.cpp index 953ec1c..383eeef 100644 --- a/glabels/MainWindow.cpp +++ b/glabels/MainWindow.cpp @@ -572,17 +572,18 @@ namespace glabels { QWidget* page = new QWidget; - mView = new View(); + mViewScrollArea = new QScrollArea(); + mViewScrollArea->setMinimumSize( 640, 450 ); + mViewScrollArea->setWidgetResizable( true ); + + mView = new View( mViewScrollArea ); mObjectEditor = new ObjectEditor(); - QScrollArea* scrollArea = new QScrollArea(); - scrollArea->setMinimumSize( 640, 450 ); - scrollArea->setWidgetResizable( true ); - scrollArea->setWidget( mView ); + mViewScrollArea->setWidget( mView ); QVBoxLayout* editorVLayout = new QVBoxLayout; editorVLayout->addWidget( editorToolBar ); - editorVLayout->addWidget( scrollArea ); + editorVLayout->addWidget( mViewScrollArea ); QHBoxLayout* editorHLayout = new QHBoxLayout; editorHLayout->addLayout( editorVLayout ); diff --git a/glabels/MainWindow.h b/glabels/MainWindow.h index d4754f7..b2a7311 100644 --- a/glabels/MainWindow.h +++ b/glabels/MainWindow.h @@ -29,6 +29,7 @@ class QMenuBar; class QMenu; class QToolBar; class QLabel; +class QScrollArea; namespace glabels @@ -189,6 +190,7 @@ namespace glabels QTabWidget* mNotebook; LabelModel* mModel; + QScrollArea* mViewScrollArea; View* mView; ObjectEditor* mObjectEditor; PrintView* mPrintView; diff --git a/glabels/PageRenderer.cpp b/glabels/PageRenderer.cpp index bb16138..6a6519d 100644 --- a/glabels/PageRenderer.cpp +++ b/glabels/PageRenderer.cpp @@ -175,7 +175,6 @@ namespace glabels printCropMarks( painter ); - qDebug() << "ipage = " << iPage << ", iStart = " << iStart << ", iEnd = " << iEnd; for ( int i = iStart; i < iEnd; i++ ) { painter->save(); diff --git a/glabels/View.cpp b/glabels/View.cpp index 9b870f1..c568480 100644 --- a/glabels/View.cpp +++ b/glabels/View.cpp @@ -74,7 +74,8 @@ namespace /// /// Constructor /// -glabels::View::View( QWidget *parent ) : QWidget(parent) +glabels::View::View( QScrollArea* scrollArea, QWidget* parent ) + : QWidget(parent), mScrollArea(scrollArea) { mState = IdleState; @@ -232,9 +233,8 @@ glabels::View::zoomToFit() using std::min; using std::max; - // Assumes parent widget (QScrollArea) exists - double wPixels = parentWidget()->width(); - double hPixels = parentWidget()->height(); + double wPixels = mScrollArea->maximumViewportSize().width(); + double hPixels = mScrollArea->maximumViewportSize().height(); double x_scale = ( wPixels - ZOOM_TO_FIT_PAD ) / mModel->w(); double y_scale = ( hPixels - ZOOM_TO_FIT_PAD ) / mModel->h(); @@ -280,7 +280,7 @@ glabels::View::setZoomReal( double zoom, bool zoomToFitFlag ) /* Actual scale depends on DPI of display (assume DpiX == DpiY). */ mScale = zoom * physicalDpiX() / PTS_PER_INCH; - setMinimumSize( mScale*mModel->w(), mScale*mModel->h() ); + setMinimumSize( mScale*mModel->w() + ZOOM_TO_FIT_PAD, mScale*mModel->h() + ZOOM_TO_FIT_PAD ); /* Adjust origin to center label in widget. */ mX0 = (width()/mScale - mModel->w()) / 2; diff --git a/glabels/View.h b/glabels/View.h index 0676fcd..26ccd21 100644 --- a/glabels/View.h +++ b/glabels/View.h @@ -22,6 +22,7 @@ #define glabels_View_h #include +#include #include #include "LabelRegion.h" @@ -46,7 +47,7 @@ namespace glabels // Lifecycle ///////////////////////////////////// public: - View( QWidget *parent = 0 ); + View( QScrollArea* scrollArea, QWidget* parent = 0 ); ///////////////////////////////////// @@ -142,8 +143,8 @@ namespace glabels // Private slots ///////////////////////////////////// private: - void onLabelChanged(); - void onLabelSizeChanged(); + void onModelChanged(); + void onModelSizeChanged(); ///////////////////////////////////// @@ -167,6 +168,8 @@ namespace glabels Barcode }; + QScrollArea* mScrollArea; + double mZoom; bool mZoomToFitFlag; double mScale;