Как взять параметр из C++ в QML на QT?

Добрый день, пишу первое приложение на Qt. Задача прочитать файл ini и передать значение в интерфейсную часть.
Ссылка на мой проект
Для начала опускаем чтение ini файла, и просто передаем параметр из c++ в qml
Создан класс ApplicationSettings унаследованный от QObject, который расшаривает два параметра:
settings.h
#include <QObject>
#include <QColor>
class ApplicationSettings : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QColor backgroundColor READ bColor)
    Q_PROPERTY(int justNum READ num)
public:
    QColor bColor();
    int num();
};

settings.cpp
#include "settings.h"
QColor ApplicationSettings::bColor()
{
    return Qt::red;
}
int ApplicationSettings::num()
{
    return 50;
}

Регистрирую новый тип:
main.cpp
qmlRegisterType<ApplicationSettings>("ApplicationSettings", 1, 0, "ApplicationSettings");

И далее читаю значения полей из qml:
mode1.qml
import QtQuick 2.9
import QtQuick.Controls 2.2
import ApplicationSettings 1.0

ApplicationWindow {
    ApplicationSettings {
        id: settings
    }

    title: qsTr("ncf05m")
    width: 600
    height: 1066
    color: settings.backgroundColor
    visible: true

    Text {
        id: element
        x: settings.num
        y: settings.num
        text: qsTr("Text")
        font.pixelSize: 12
    }
}

Приложение не компилируется и выдаются ошибки:
ncf05m/settings.h:6: error: error: undefined reference to 'vtable for ApplicationSettings'
Не понятно, что от меня требуется, помогите сделать первые шаги
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
Zifix
@Zifix Куратор тега Qt
Barbatum
Добавляйте новые классы через диалог QtCreator, чтобы не забывать подтягивать файлы в проект. Вы забыли добавить хеадер, соответственно ничего и не собралось.

Лично я предпочитаю пробрасывать параметры через https://doc.qt.io/qt-5/qtqml-cppintegration-contex...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы