Added plugin object to qml context

This commit is contained in:
2025-03-10 12:04:23 +01:00
parent 4c4d85a78d
commit a170490cbb
6 changed files with 99 additions and 40 deletions

View File

@ -6,11 +6,13 @@
#include <QtQuick>
#include <QtWidgets>
#include <qfileinfo.h>
#include <qobject.h>
#include <qobjectdefs.h>
#include <qpushbutton.h>
#include <qquickview.h>
#include <qquickwindow.h>
#include <qresource.h>
#include <qsggeometry.h>
#include <qurl.h>
#include <qwidget.h>
@ -21,21 +23,48 @@ namespace mg {
class DemoPluginMg : public rqt_gui_cpp::Plugin {
Q_OBJECT
Q_PROPERTY(QObject* demoPlugin READ demoPlugin NOTIFY demoPluginChanged)
public:
DemoPluginMg();
virtual void shutdownPlugin() {
cleanupResources();
}
virtual void initPlugin(qt_gui_cpp::PluginContext &);
QObject * demoPlugin() const {
return (QObject *)(this);
}
const QSGGeometry::Point2D hello[8] = {
{0.2,0.2}, {0.8,0.2},
{0.2,0.2}, {0.2,0.8},
{0.2,0.4}, {0.4,0.8},
{0.2,0.4}, {0.1,0.1},
};
const int hello_c = 8;
signals:
void demoPluginChanged(QObject * const);
};
inline void DemoPluginMg::initPlugin(qt_gui_cpp::PluginContext &pc) {
initResources();
QQuickView *qv = new QQuickView(QUrl("qrc:/qml/helloworld.qml"));
const QUrl qrl("qrc:/qml/helloworld.qml");
QQuickView *qv = new QQuickView();
qv->rootContext()->setContextProperty("DemoPlug", this);
qv->setSource(qrl);
qv->setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
QSurfaceFormat format = qv->format();
format.setSamples(4);
qv->setFormat(format);
QWidget *qw_ = QWidget::createWindowContainer(qv);
pc.addWidget(qw_);
}
}; // namespace mg