summaryrefslogtreecommitdiffstats
path: root/tools/qmlviewer/qmlviewer.cpp
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/qmlviewer.cpp
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/qmlviewer.cpp')
-rw-r--r--tools/qmlviewer/qmlviewer.cpp35
1 files changed, 27 insertions, 8 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();