Ошибка "Свойство Smth Object Smth не является функцией", как исправить? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка "Свойство Smth Object Smth не является функцией", как исправить? [закрыто]

Сообщение Anonymous »

Я следую учебному пособию для игры на QML (ссылка: и я просмотрел мой код и все было точно так же, как и все то же самое. Итак, в чем проблема?

Код: Выделить всё

#include 
#include 
#include 
#include 

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

QQmlApplicationEngine engine;

Controller control;

engine.rootContext()->setContextProperty("control", &control);

const QUrl url(QStringLiteral("qrc:/game_tutorial/main.qml"));
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreated,
&app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
engine.load(url);

return app.exec();
}
< /code>
controller.cpp:
#include "controller.h"

Controller::Controller(QObject *parent): m_x(50), m_y(50), m_xSpeed(10)
{

}
< /code>
controller.h:
#ifndef CONTROLLER_H
#define CONTROLLER_H

#include 

class Controller : public QObject
{
Q_OBJECT

Q_PROPERTY(double x READ x WRITE setX NOTIFY xChanged)
Q_PROPERTY(double y READ y WRITE setY NOTIFY yChanged)

double x(){return m_x;}
double y(){return m_y;}
void setX(double val){if(m_x != val){m_x = val;emit xChanged();}}
void setY(double val){if(m_y != val){m_y = val;emit yChanged();}}
Q_INVOKABLE void moveLeft(){setX(m_x - m_xSpeed);}
Q_INVOKABLE void moveRight(){setX(m_x + m_xSpeed);}

signals:
void xChanged();
void yChanged();

private:
double m_x; // current position on x axis
double m_y; // current position on y axis
double m_xSpeed; //speed of movement on x

public:

Controller(QObject *parent = nullptr);
};

#endif // CONTROLLER_H
< /code>
main.qml:
import QtQuick

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

Rectangle
{
id: move
width: 50
height: 50
color: "red"
x: control.x
y: control.y
focus: true

Keys.onPressed: (event) =>
{
if(event.key === Qt.Key_D)
{
control.moveRight()
}
if(event.key === Qt.Key_A)
{
control.moveLeft()
}
}
}
}
Каждый раз, когда я нажимаю a или d , он написан либо

typeerror: свойство 'moveleft' controller (0xa6f7ff850) не является функцией

/> или < /p>

typeerror: свойство 'Movereart' контроллера объекта (0xa6f7ff850) не является функцией < /p>
< /blockquote>
Пожалуйста, объясните мне, почему эта ошибка и скажите, как ее исправить.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... how-to-fix
Ответить

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

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

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

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

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