Я пытаюсь связать свой слот, который находится в классе 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