diff options
Diffstat (limited to 'examples/quick/embeddedinwidgets/main.cpp')
-rw-r--r-- | examples/quick/embeddedinwidgets/main.cpp | 72 |
1 files changed, 59 insertions, 13 deletions
diff --git a/examples/quick/embeddedinwidgets/main.cpp b/examples/quick/embeddedinwidgets/main.cpp index 7a30b277de..dd2fda927b 100644 --- a/examples/quick/embeddedinwidgets/main.cpp +++ b/examples/quick/embeddedinwidgets/main.cpp @@ -39,35 +39,81 @@ ** ****************************************************************************/ -#include <QWidget> +#include <QMainWindow> #include <QApplication> #include <QVBoxLayout> #include <QLineEdit> +#include <QStatusBar> +#include <QMenuBar> +#include <QMenu> +#include <QAction> +#include <QQmlError> #include <QQuickView> -int main(int argc, char **argv) -{ - QApplication app(argc, argv); +class MainWindow : public QMainWindow { + Q_OBJECT +public: + MainWindow(); - QWidget rootWidget; +private slots: + void quickViewStatusChanged(QQuickView::Status); + void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); - QVBoxLayout *layout = new QVBoxLayout(); - rootWidget.setLayout(layout); +private: + QQuickView *m_quickView; +}; + +MainWindow::MainWindow() + : m_quickView(new QQuickView) +{ + QWidget *centralWidget = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(centralWidget); - QQuickView *view = new QQuickView(); - view->setResizeMode(QQuickView::SizeRootObjectToView); - view->setSource(QUrl(QStringLiteral("qrc:///embeddedinwidgets/main.qml"))); + m_quickView->setResizeMode(QQuickView::SizeRootObjectToView); + connect(m_quickView, SIGNAL(statusChanged(QQuickView::Status)), + this, SLOT(quickViewStatusChanged(QQuickView::Status))); + connect(m_quickView, SIGNAL(sceneGraphError(QQuickWindow::SceneGraphError,QString)), + this, SLOT(sceneGraphError(QQuickWindow::SceneGraphError,QString))); + m_quickView->setSource(QUrl(QStringLiteral("qrc:///embeddedinwidgets/main.qml"))); - QWidget *container = QWidget::createWindowContainer(view); - container->setMinimumSize(view->size()); + QWidget *container = QWidget::createWindowContainer(m_quickView); + container->setMinimumSize(m_quickView->size()); container->setFocusPolicy(Qt::TabFocus); layout->addWidget(new QLineEdit(QStringLiteral("A QLineEdit"))); layout->addWidget(container); layout->addWidget(new QLineEdit(QStringLiteral("A QLineEdit"))); + setCentralWidget(centralWidget); + + QMenu *fileMenu = menuBar()->addMenu(tr("File")); + QAction *quitAction = fileMenu->addAction(tr("Quit")); + connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); +} + +void MainWindow::quickViewStatusChanged(QQuickView::Status status) +{ + if (status == QQuickView::Error) { + QStringList errors; + foreach (const QQmlError &error, m_quickView->errors()) + errors.append(error.toString()); + statusBar()->showMessage(errors.join(QStringLiteral(", "))); + } +} - rootWidget.show(); +void MainWindow::sceneGraphError(QQuickWindow::SceneGraphError, const QString &message) +{ + statusBar()->showMessage(message); +} + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + MainWindow mainWindow; + mainWindow.show(); return app.exec(); } + +#include "main.moc" |