«Соединения QML: не может присвоить несуществующему свойству», несмотря на то, что противоположность истинаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 «Соединения QML: не может присвоить несуществующему свойству», несмотря на то, что противоположность истина

Сообщение Anonymous »

Итак, я проверил следующие вопросы, которые казались наиболее похожими на мою существующую проблему: < /p>

qml: использование сигнала CPP в QML всегда приводит к тому, что «не может назначить несуществующее свойство» < /p>

, к сожалению, это не помогло. (Также не было никакого другого решения, которое я мог бы найти на форумах StackOverflow /Google /QT и т. Д.) "onnewFramereCeived" qrc: /view.qml: 31: referenceerror:
imageprovide не определено < /p>
< /blockquote>

Вот мой код (отредактированный, чтобы сделать это, в «Минимальный рабочий пример»). />

[*] main.cpp
[*]view.qml
[*] imageprovidervm.cpp

inclide the incimplem. Imagesource класс, просто чтобы быть полным, на случай, если кто -то захочет скомпилировать это самостоятельно.

q1. Итак, я не понимаю, почему даже после установки контекстного свойства в main.cpp появляется следующая ошибка.


qrc: /view.qml: 31: referenceerror: ImagePilie не определяется. /> < /blockquote>

Что смешно, так это то, что, Intellisense /AutoCoplete, по -видимому, полностью правильно обнаруживает изображение. QML -файл, все еще я получаю следующую ошибку. Кроме того, QT IntelliSense /AutoComplete не показывает мой определенный сигнал (onnewframereceived) здесь. < /P>


qrc: /view.qml: 30: 9: qml соединения: невозможно присвоить не существующее
onnewframereceed "< /preceified" < /preceified "(Br /> onewframereceed" < /preived "< /preived"
inewframere ". /> < /blockquote>


Дополнительная информация: < /strong> отладка и остановка в точке разрыва в файле QML в строке 31, показывает в «местных и выражениях» QTCreator, который у меня есть только 2 сигнала, доступные здесь, и в « /emebrednameCed < /em>» и «Emeged». /> Почему ???#include
#include
#include

#include "imageprovidervm.h"
#include "imagesource.h"

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;
QQmlContext *context = new QQmlContext(engine.rootContext());

auto model = std::make_shared();

auto vm = new ImageProviderVM(model);
engine.addImageProvider(QLatin1String("imageProvider"), vm);
context->setContextProperty("imageProvide", vm );

model->generateImages();

engine.load(QUrl(QStringLiteral("qrc:/view.qml")));

return app.exec();
}
< /code>

view.qml


import QtQuick 2.5
import QtQuick.Controls 1.4

import QtQml.Models 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Window 2.0

ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")

menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("&Open")
onTriggered: console.log("Open action triggered");
}
MenuItem {
text: qsTr("Exit")
onTriggered: Qt.quit();
}
}
}

Rectangle {
Connections {
target: imageProvide
onNewFrameReceived: image.reload();
}
anchors.fill: parent
Column {
Image {
id: image
source: "image://imageProvider/images.jpeg?id=" + Math.random()
cache: false
asynchronous: true
function reload() {
var oldSource = source;
source = "";
source = oldSource;
}
}
}
}
Label {
text: qsTr("Hello World")
anchors.centerIn: parent
}
}
< /code>

imageprovidervm.h

#ifndef IMAGEPROVIDERVM_H
#define IMAGEPROVIDERVM_H

#include
#include
#include "imagesource.h"

class ImageProviderVM : public QObject, public QQuickImageProvider
{
Q_OBJECT
public:
ImageProviderVM(std::shared_ptr model);
~ImageProviderVM();

virtual QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override;
virtual QImage requestImage(const QString & id, QSize * size, const QSize & requestedSize) override;

// Properties
Q_PROPERTY(QImage newimage READ getNewImage NOTIFY newFrameReceived)

// Signals
signals:
void newFrameReceived();

private:
QImage getNewImage() const;

QPixmap m_pixmap;
QImage m_image;

std::shared_ptr m_model;
};

#endif // IMAGEPROVIDERVM_H
< /code>

imageprovidervm.cpp

#include "imageprovidervm.h"
#include

#include
#include

ImageProviderVM::ImageProviderVM()
: QQuickImageProvider(QQuickImageProvider::Image)
{
}

ImageProviderVM::ImageProviderVM(std::shared_ptr model)
: QQuickImageProvider (QQuickImageProvider::Image)
, m_pixmap()
, m_model(model)
{
m_model->subscribeNewPixMap([this](QPixmap pixmap) {
qDebug()

cmake_minimum_required(VERSION 2.8.12)

project(non_existent_property LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5 COMPONENTS Core Quick REQUIRED)

file( GLOB SRCS *.cpp *.h )

add_executable(${PROJECT_NAME} "qml.qrc" ${SRCS})

target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Quick "pthread")


Подробнее здесь: https://stackoverflow.com/questions/433 ... opposite-b
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»