From 76e8affff0ac6fce21fa5491037061c6e46405a7 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 23 Dec 2014 12:50:08 -0800 Subject: [PATCH] Widget container for QML --- src/QGCQmlWidgetHolder.cpp | 49 +++++++++++++++++++++++++++++++ src/QGCQmlWidgetHolder.h | 59 ++++++++++++++++++++++++++++++++++++++ src/QGCQmlWidgetHolder.ui | 32 +++++++++++++++++++++ 3 files changed, 140 insertions(+) create mode 100644 src/QGCQmlWidgetHolder.cpp create mode 100644 src/QGCQmlWidgetHolder.h create mode 100644 src/QGCQmlWidgetHolder.ui diff --git a/src/QGCQmlWidgetHolder.cpp b/src/QGCQmlWidgetHolder.cpp new file mode 100644 index 000000000..75beeb7d1 --- /dev/null +++ b/src/QGCQmlWidgetHolder.cpp @@ -0,0 +1,49 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2014 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +/// @file +/// @author Don Gagne + +#include "QGCQmlWidgetHolder.h" + +QGCQmlWidgetHolder::QGCQmlWidgetHolder(QWidget *parent) : + QWidget(parent) +{ + _ui.setupUi(this); +} + +QGCQmlWidgetHolder::~QGCQmlWidgetHolder() +{ + +} + +void QGCQmlWidgetHolder::setAutoPilot(AutoPilotPlugin* autoPilot) +{ + _ui.qmlWidget->rootContext()->setContextProperty("autopilot", autoPilot); +} + +void QGCQmlWidgetHolder::setSource(const QUrl& qmlUrl) +{ + _ui.qmlWidget->setSource(qmlUrl); + _ui.qmlWidget->setMinimumSize(_ui.qmlWidget->rootObject()->width(), _ui.qmlWidget->rootObject()->height()); +} diff --git a/src/QGCQmlWidgetHolder.h b/src/QGCQmlWidgetHolder.h new file mode 100644 index 000000000..90b8e084c --- /dev/null +++ b/src/QGCQmlWidgetHolder.h @@ -0,0 +1,59 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2014 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +#ifndef QGCQmlWidgetHolder_h +#define QGCQmlWidgetHolder_h + +/// @file +/// @author Don Gagne + +#include + +#include "ui_QGCQmlWidgetHolder.h" +#include "AutoPilotPlugin.h" + +namespace Ui { +class QGCQmlWidgetHolder; +} + +/// This is used to create widgets which are implemented in QML. + +class QGCQmlWidgetHolder : public QWidget +{ + Q_OBJECT + +public: + explicit QGCQmlWidgetHolder(QWidget *parent = 0); + ~QGCQmlWidgetHolder(); + + /// Sets the UAS into the widget which in turn will load facts into the context + void setAutoPilot(AutoPilotPlugin* autoPilot); + + /// Sets the QML into the control + void setSource(const QUrl& qmlUrl); + +private: + Ui::QGCQmlWidgetHolder _ui; +}; + +#endif diff --git a/src/QGCQmlWidgetHolder.ui b/src/QGCQmlWidgetHolder.ui new file mode 100644 index 000000000..0a000a703 --- /dev/null +++ b/src/QGCQmlWidgetHolder.ui @@ -0,0 +1,32 @@ + + + QGCQmlWidgetHolder + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + + + + + QGCQuickWidget + QQuickWidget +
QGCQuickWidget.h
+ 1 +
+
+ + +
-- 2.22.0