Не могу связывать сигнал C ++ с слотом QMLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не могу связывать сигнал C ++ с слотом QML

Сообщение Anonymous »

Я пытаюсь связать свой слот, который находится в классе C ++ с файлом QML. У меня есть основной класс, в котором создается мой сигнал, а также мой QML -файл, с которым я хочу связать мой класс C ++, создается только после нажатия кнопки, он открывается через StackView < /p>
Небольшой кусочек кода, говоря о регистрации:
StackView {
id: stackView
anchors.fill: parent
initialItem: loginPage

Component {
id:loginPage

LoginPage {
onRegisterClicked: {
stackView.push(registrationPage)
}
}
}

Component {
id: registrationPage
RegistrationPage {
onBackButtonClicked: {
stackView.pop()
}
}
}
}
< /code>
Я попробовал несколько реализаций о том, как подключить сигнал и слот в других сообщениях на форуме, но по какой -то причине мне ничего не работает, я также пытался создать новый проект и тест Как это можно сделать там, но для меня ничего не работает, последняя реализация, на которой я установил, выглядит как это
registrationpage.qml часть кода:
Page {
id: registrationPage

property var controller: MainController.regPageController // контроллер RegistrationPageController

Connections {
target: registrationPage.controller
function onMySignal()
{
console.log("asd123")
}
}
< /code>
В то же время, если я просто вызову функций из моего класса C ++, то все будет работать, только сигналы и слоты не работают < /p>
< strong> RegistrationPageController.h
#ifndef REGISTRATIONPAGECONTROLLER_H
#define REGISTRATIONPAGECONTROLLER_H

#include
#include "qqml.h"
#include "ServerConnector.h"

class RegistrationPageController : public QObject
{
Q_OBJECT
QML_ELEMENT

public:
explicit RegistrationPageController(ServerConnector& serverConnector_, QObject* parent = nullptr);
~RegistrationPageController();

Q_INVOKABLE void prepareRegistrationRequest(const QString& q_initials, const QString& q_login, const QString& q_phoneNumber, const QString& q_email, const QString& password) const;

signals:
void mySignal();

private:
ServerConnector& serverConnector_;

};

#endif // REGISTRATIONPAGECONTROLLER_H

registrationpagecontroller.cpp
#include "../../../include/RegistrationPageController.h"

RegistrationPageController::RegistrationPageController(ServerConnector& serverConnector_, QObject* parent)
: QObject(parent)
, serverConnector_(serverConnector_)
{
emit mySignal();
}

RegistrationPageController::~RegistrationPageController()
{
}

void RegistrationPageController::prepareRegistrationRequest(const QString& q_initials, const QString& q_login, const QString& q_phoneNumber, const QString& q_email, const QString& password) const
{}


Подробнее здесь: https://stackoverflow.com/questions/793 ... o-qml-slot
Ответить

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

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

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

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

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