Новичок в Qml - Qt, прошу развернутый ответ.
Пытаюсь связать Qml модуль, созданный в Qt Design Studio, с реализацией на C++.
Появляется данная ошибка в неком файле "qqmldebug.h" , который является embeded файлом Qt, в связи с чем не могу изменить его без использования chmod.
Прикладываю код своего приложения и файла "qqmldebug.h", а так же скриншот ошибок, если это поможет
Tachometer.pro:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
RESOURCES += \
$$files(qml/*)
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QObject>
#include <QMainWindow>
#include <QGuiApplication>
#include <QKeyEvent>
#include <QVariant>
#include <QtQuick/QQuickView>
#include <QtQml/QQmlContext>
#include <QtQml/QQmlEngine>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
Q_INVOKABLE void startStopAnimation();
~MainWindow();
private:
Ui::MainWindow *ui;
QObject* root;
QQuickView view;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
view.resize(1920, 1080);
view.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
view.engine()->addImportPath("/opt/Qt/Tools/QtDesignStudio-3.1.0-preview/lib/Qt/qml");
view.setSource(QUrl("/home/y66ask34/QtPojects/qtQuickConv/qml/Qwerty/content/Screen01.ui.qml"));
root = view.rootContext();
view.rootContext()->setContextProperty("window", this);
}
void MainWindow::startStopAnimation()
{
QObject* timeLine = root->findChild<QObject*>("moveTimeLine");
//QObject* timeLineAnimation = timeLine->findChild<QObject*>("TimeLineAnimation");
QObject* monitor = root->findChild<QObject*>("text8");
int counter = 0;
QVariant countFrame = QVariant(6000.0);
while (timeLine->property("currentFrame") != timeLine->property("endFrame"))
{
if (timeLine->property("currentFrame").toInt() >= 6000 and timeLine->property("currentFrame").toInt() <= 10000)
{
monitor->property("Text") = counter;
counter++;
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Ошибки:
: