summaryrefslogtreecommitdiffstats
path: root/tools/qmlviewer
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-05-21 05:32:35 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-05-21 05:32:35 (GMT)
commita3f784dd8c49a4edf1a22d68d435e29ceaf71c2d (patch)
treec414fa7f4f3269f04cf1a7f4efdfcf75328a8b01 /tools/qmlviewer
parenteb29ed226a426126aff5f4deea2f864fb6466c65 (diff)
downloadQt-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.
Diffstat (limited to 'tools/qmlviewer')
-rw-r--r--tools/qmlviewer/qmlviewer.cpp35
-rw-r--r--tools/qmlviewer/qmlviewer.h6
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;
};