Михаиллл3 апреля 2019 г. 9:02
В QML не получается использовать функцию из С++
Добрый день.
В QML не получается использовать функцию из С++
Создал класс:
class DataWorking : public QObject { public: DataWorking(); ~DataWorking(); int randomNumber; int winNumber; int progressNumber; int roundNumber;// число раундов public slots: void setRandomNamber(int first, int last); };
DataWorking::DataWorking() { winNumber = 0; progressNumber = 0; roundNumber = 20; } DataWorking::~DataWorking() { winNumber = 0; progressNumber = 0; } void DataWorking::setRandomNamber(int first, int last) { randomNumber = Random::get(first, last); qDebug()<<"randomNamber = "<<randomNumber; }
в main.cpp создаю контекст
int main(int argc, char *argv[]) { //qDebug()<<Random::get(15, 43); QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); DataWorking dataWorking; //основной объект класса QQmlApplicationEngine engine;// Создаём движок qml QQmlContext *context = engine.rootContext(); // Создаём корневой контекст /* Загружаем объект в контекст для установки соединения, * а также определяем имя, по которому будет происходить соединение * */ context->setContextProperty("dataWorking", &dataWorking); engine.load(QUrl(QStringLiteral("qrc:/main.qml")));// Создаём движок qml if (engine.rootObjects().isEmpty()) return -1; return app.exec(); }
в main.qml указываю соединение
Connections { target: dataWorking // Указываем целевое соединение }
и пытаюсь вызвать функцию класса:
page1Button0.onClicked: //left button { dataWorking.setRandomNamber(1,55) }
но получаю ошибку: Property 'setRandomNamber' of object QObject(0x22fd40) is not a function
Скажите пожалуйста, как можно воспользоваться этой функцией и другими свойствами?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
B
- Bogdannn
- 28 марта 2024 г. 6:15
C++ - Тест 001. Первая программа и типы данных
- Результат:46баллов,
- Очки рейтинга-6
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 13:50
EVA25 декабря 2023 г. 22:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев14 апреля 2024 г. 13:35
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
Как получить в массив значения из связанной модели? Спасибо, разобрался:))
AC
QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
Alexandru Codreanu19 января 2024 г. 23:57
Приветствую.
Чтобы использовать методы или свойства из С++ надо юзать Q_INVOCABLE и Q_PROPERTY
И тогда QML сможет их юзать.
Скажите пожалуйста, как это сделать.
Попробовал сделать так, компилируется, но не заработало, видимо сделал неправильно:
Таккже попробовал сделать через Q_INVOCABLE , и тоже не работает
в хедере пишем
main.cpp
В QML
Спасибо. Оказалось достаточно Q_OBJECT добавить и использовать Q_INVOKABLE