diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-05-21 05:32:35 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-05-21 05:32:35 (GMT) |
commit | a3f784dd8c49a4edf1a22d68d435e29ceaf71c2d (patch) | |
tree | c414fa7f4f3269f04cf1a7f4efdfcf75328a8b01 | |
parent | eb29ed226a426126aff5f4deea2f864fb6466c65 (diff) | |
download | Qt-a3f784dd8c49a4edf1a22d68d435e29ceaf71c2d.zip Qt-a3f784dd8c49a4edf1a22d68d435e29ceaf71c2d.tar.gz Qt-a3f784dd8c49a4edf1a22d68d435e29ceaf71c2d.tar.bz2 |
Use QWidget as the TLW.
It is basically impossible to make QMainWindow size the contents to the
exact size wanted. Correct sizing is particularly important for
visual test recording.
-rw-r--r-- | tools/qmlviewer/qmlviewer.cpp | 35 | ||||
-rw-r--r-- | tools/qmlviewer/qmlviewer.h | 6 |
2 files changed, 31 insertions, 10 deletions
diff --git a/tools/qmlviewer/qmlviewer.cpp b/tools/qmlviewer/qmlviewer.cpp index 4b0a83a..0417539 100644 --- a/tools/qmlviewer/qmlviewer.cpp +++ b/tools/qmlviewer/qmlviewer.cpp @@ -124,7 +124,7 @@ void PreviewDeviceSkin::slotPopupMenu() QmlViewer::QmlViewer(QFxTestEngine::TestMode testMode, const QString &testDir, QWidget *parent, Qt::WindowFlags flags) - : QMainWindow(parent, flags), frame_stream(0), scaleSkin(true) + : QWidget(parent, flags), frame_stream(0), scaleSkin(true), mb(0) { testEngine = 0; devicemode = false; @@ -133,12 +133,12 @@ QmlViewer::QmlViewer(QFxTestEngine::TestMode testMode, const QString &testDir, Q record_autotime = 0; record_period = 20; - setAttribute(Qt::WA_OpaquePaintEvent); - setAttribute(Qt::WA_NoSystemBackground); if (!(flags & Qt::FramelessWindowHint)) createMenu(menuBar(),0); canvas = new QFxView(this); + canvas->setAttribute(Qt::WA_OpaquePaintEvent); + canvas->setAttribute(Qt::WA_NoSystemBackground); canvas->setContentResizable(!skin || !scaleSkin); if(testMode != QFxTestEngine::NoTest) @@ -146,17 +146,31 @@ QmlViewer::QmlViewer(QFxTestEngine::TestMode testMode, const QString &testDir, Q QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize))); - setCentralWidget(canvas); + QVBoxLayout *layout = new QVBoxLayout; + layout->setMargin(0); + layout->setSpacing(0); + setLayout(layout); + if (mb) + layout->addWidget(mb); + layout->addWidget(canvas); +} + +QMenuBar *QmlViewer::menuBar() const +{ + if (!mb) + mb = new QMenuBar((QWidget*)this); + + return mb; } QSize QmlViewer::sizeHint() const { if (skin) - return QMainWindow::sizeHint(); + return QWidget::sizeHint(); else { // Kludge to force QMainWindow to be EXACTLY the right size for the canvas. QSize sh = canvas->sizeHint(); - sh.setHeight(sh.height()+menuBar()->sizeHint().height()+1); + sh.setHeight(sh.height()+menuBar()->sizeHint().height()); return sh; } } @@ -252,6 +266,8 @@ void QmlViewer::createMenu(QMenuBar *menu, QMenu *flatmenu) connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); fileMenu->addSeparator(); fileMenu->addAction(quitAction); + if (menu) + menu->setFixedHeight(menu->sizeHint().height()); } void QmlViewer::setScaleSkin() @@ -419,7 +435,9 @@ void QmlViewer::setSkin(const QString& skinDirectory) DeviceSkinParameters parameters; if (!skinDirectory.isEmpty() && parameters.read(skinDirectory,DeviceSkinParameters::ReadAll,&err)) { layout()->setEnabled(false); - setMenuBar(0); + //setMenuBar(0); + if (mb) + mb->hide(); if (!err.isEmpty()) qWarning() << err; skin = new PreviewDeviceSkin(parameters,this); @@ -436,6 +454,7 @@ void QmlViewer::setSkin(const QString& skinDirectory) menuBar()->clear(); canvas->setParent(this, Qt::SubWindow); createMenu(menuBar(),0); + mb->show(); setMinimumSize(QSize(0,0)); setMaximumSize(QSize(16777215,16777215)); canvas->setMinimumSize(QSize(0,0)); @@ -443,7 +462,7 @@ void QmlViewer::setSkin(const QString& skinDirectory) QRect g = geometry(); g.setSize(sizeHint()); setParent(0,windowFlags()); // recreate - canvas->move(0,menuBar()->sizeHint().height()+1); + canvas->move(0,menuBar()->sizeHint().height()); setGeometry(g); layout()->setEnabled(true); show(); diff --git a/tools/qmlviewer/qmlviewer.h b/tools/qmlviewer/qmlviewer.h index 967af49..04d94cc 100644 --- a/tools/qmlviewer/qmlviewer.h +++ b/tools/qmlviewer/qmlviewer.h @@ -14,7 +14,7 @@ #ifndef QMLVIEWER_H #define QMLVIEWER_H -#include <QMainWindow> +#include <QMenuBar> #include <QBasicTimer> #include <QTime> #include <qfxtestengine.h> @@ -26,7 +26,7 @@ class PreviewDeviceSkin; class QFxTestEngine; class QProcess; -class QmlViewer : public QMainWindow +class QmlViewer : public QWidget { Q_OBJECT public: @@ -45,6 +45,7 @@ public: void addLibraryPath(const QString& lib); QSize sizeHint() const; + QMenuBar *menuBar() const; public slots: void sceneResized(QSize size); @@ -87,6 +88,7 @@ private: QAction *recordAction; QString currentSkin; bool scaleSkin; + mutable QMenuBar *mb; QFxTestEngine *testEngine; }; |