Я делаю по уроку . Но у меня ошибка :qrc:/Samples/Analysis/ViewshedGeoElement/ViewshedGeoElement.qml:29:1: module "MapDataSenderTexture" version 0.1 is not installed
Мой код:
mapdatasendertexture.h
#ifndef MAPDATASENDERTEXTURE_H
#define MAPDATASENDERTEXTURE_H
#include <QObject>
//#include "threedmodeltexture.h"
class MapDataSenderTexture: public QObject
{
Q_OBJECT
Q_PROPERTY(int someProperty READ getSomeProperty WRITE setSomeProperty NOTIFY mapChanged)
public:
explicit MapDataSenderTexture(QObject *parent = nullptr);
int getSomeProperty()const;
void setSomeProperty(const int &);
signals:
void mapChanged(const int &);
private:
int someProperty;
};
#endif // MAPDATASENDERTEXTURE_H
mapdatasendertexture.cpp
#include "mapdatasendertexture.h"
MapDataSenderTexture::MapDataSenderTexture(QObject *parent)
{
}
int MapDataSenderTexture::getSomeProperty()const
{
// qDebug() << "I'm getter";
return someProperty;
}
void MapDataSenderTexture::setSomeProperty(const int &i)
{
// qDebug() << "I'm setter";
someProperty = i;
}
main.cpp
...
qmlRegisterType<MapDataSenderTexture>("MapDataSenderTexture", 1, 0, "MapDST");
...
ViewshedGeoElement.qml
...
import MapDataSenderTexture 0.1
...
...
MapDST {
onMapChanged:
{
...
}
}
...
Это неверно по смыслу:
qmlRegisterType<MapDataSenderTexture>("MapDataSenderTexture", 1, 0, "MapDST");
Первый параметр это путь к виртуальному пакету (выберите любой).
Например так:
qmlRegisterType<MapDataSenderTexture>("my.widgets", 1, 0, "MapDST");
Применение в qml:
import my.widgets 1.0
//...
MapDST {
}
//...
Иногда, вместо регистрации модуля, я пробрасываю глобальную переменную непосредственно в QML
main.cpp
#include <QtWidgets/QApplication>
#include <QtQuick/QQuickView>
#include <QtQml/QQmlEngine>
#include <QtQml/QQmlContext>
#include "backend.h"
int main(int argc, char *argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
QQuickView viewer;
viewer.setResizeMode(QQuickView::SizeRootObjectToView);
BackEnd backend;
viewer.rootContext()->setContextProperty("backEnd", &backend);
QObject::connect(viewer.engine(), &QQmlEngine::quit, &viewer, &QWindow::close);
viewer.setSource(QUrl("qrc:/main.qml"));
viewer.show();
return app.exec();
}
backend.h
#ifndef BACKEND_H
#define BACKEND_H
#include <QObject>
class BackEnd : public QObject
{
Q_OBJECT
public:
BackEnd();
signals:
public slots:
QString getContacts();
};
#endif // BACKEND_H
main.qml
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.0
import QtQuick.XmlListModel 2.0
ColumnLayout{
function lol(){
xmlModel.xml=backEnd.getContacts();
}
Это позволяет не разбираться со странной системой модулей QML и использовать сущности из C++ повторно, не плодя лишний код
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотелось бы получить возможность заполнять байтовое поле в классе гарантировано в компил-тайме используя человекочитаемые enum'ы и структурыНапример:
Никак не могу найти, как правильно установить libpng для VS community 2017Не смог установить при помощи видео с установкой для VS 2015, так как не совпадают...
Не понимаю как QMap <int, ThreeDModelTexture*> mapTexture; передать в qmlКласс ThreeDModelTexture у меня такой :
Мне надо собрать проект C++ QtУ меня установлен llvm-8, в pro-файле указанно