Я пытаюсь связать свой слот, который находится в классе 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
Не могу связывать сигнал C ++ с слотом QML ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1738104239
Anonymous
Я пытаюсь связать свой слот, который находится в классе C ++ с файлом QML. У меня есть основной класс, в котором создается мой сигнал, а также мой QML -файл, с которым я хочу связать мой класс C ++, создается только после нажатия кнопки, он открывается через StackView < /p>
[b] Небольшой кусочек кода, говоря о регистрации: [/b]
StackView {
id: stackView
anchors.fill: parent
initialItem: loginPage
Component {
id:loginPage
LoginPage {
onRegisterClicked: {
stackView.push(registrationPage)
}
}
}
Component {
id: registrationPage
RegistrationPage {
onBackButtonClicked: {
stackView.pop()
}
}
}
}
< /code>
Я попробовал несколько реализаций о том, как подключить сигнал и слот в других сообщениях на форуме, но по какой -то причине мне ничего не работает, я также пытался создать новый проект и тест Как это можно сделать там, но для меня ничего не работает, последняя реализация, на которой я установил, выглядит как это
[b] registrationpage.qml часть кода: [/b]
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
[b] registrationpagecontroller.cpp[/b]
#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
{}
Подробнее здесь: [url]https://stackoverflow.com/questions/79395355/cant-bind-c-signal-to-qml-slot[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия