У меня есть файл QML, который я пытаюсь прочитать, QVariantList, который содержит QObject Configuration::AmbientLoopConfiguration и его свойства. Я вижу, что в списке есть экземпляр объекта, который я создаю в другом месте, как и ожидалось в QML, но ожидаемые свойства mName и mFile не видны (не определены). Чего мне не хватает, чтобы получить доступ к mFile и mName?
configuration.cpp
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#include "qdom.h"
#include
#include
class Configuration : public QObject
{
Q_OBJECT
public:
Configuration();
/* non zone members */
Q_PROPERTY(QVariantList getAmbientLoopConfigurations READ getAmbientLoopConfigurations CONSTANT)
struct AmbientLoopConfiguration {
QString mName = "foo";
QString mFile = "bar";
};
struct ShellyConfiguration {
QString mID;
QString mIP;
};
struct CameraConfiguration {
QString mName;
QString mLowRTSP;
QString mMedRTSP;
QString mHighRTSP;
};
struct PresetConfiguration {
QString mName;
QString mColorCode;
};
struct SceneItemConfiguration {
bool mState;
QString mDevice;
QString mColorCode;
};
struct SceneGroupConfiguration {
QString mName;
QList mZones;
QList mSceneItems;
};
/* zone members */
struct LightConfiguration {
QString mName;
QString mShellyID;
};
struct SensorConfiguration {
QString mName;
QString mID;
};
struct ZoneConfiguration {
QString mName;
QString mColorCode;
QList mLightConfigurations;
QList mSensorConfigurations;
};
/* base config object */
struct Config
{
QList mZoneConfigurations;
QList mShellyConfigurations;
QList mCameraConfigurations;
QList mPresetConfigurations;
QList mSceneGroupConfigurations;
QList mAmbientLoopConfigurations;
};
Q_INVOKABLE Config getConfiguration() { return this->config; };
QVariantList getAmbientLoopConfigurations() {
QVariantList l;
for (Configuration::AmbientLoopConfiguration &c : this->config.mAmbientLoopConfigurations) {
l.append(QVariant::fromValue(c));
}
return l;
};
Q_INVOKABLE bool loadBaseConfiguration();
Q_INVOKABLE bool loadUserDefinedConfiguration();
private:
Config config;
QDomDocument validateConfigFile(QString config);
};
#endif // CONFIGURATION_H
main.cpp
Configuration *configuration = new Configuration();
configuration->loadBaseConfiguration();
configuration->loadUserDefinedConfiguration();
..
qmlRegisterType("smah.configuration", 1, 0, "Configuration");
qmlRegisterType("smah.configuration.ambient", 1, 0, "ConfigurationAmbient");
..
engine.rootContext()->setContextProperty("configuration", configuration);
Media.qml
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.13
import QtMultimedia
import smah.configuration
import smah.configuration.ambient
import "."
import "qrc:/SMAHComponents"
Page {
id: page
x: 0
Component.onCompleted: {
console.log(configuration.getAmbientLoopConfigurations[0])
console.log(configuration.getAmbientLoopConfigurations[0].mName)
}
}
Вывод приведенного выше кода
QVariant(Configuration::AmbientLoopConfiguration, )
undefined
Подробнее здесь: https://stackoverflow.com/questions/798 ... t-from-qml
Невозможно получить доступ ко всем членам класса в QVariantList из QML. ⇐ C++
Программы на C++. Форум разработчиков
1767746420
Anonymous
У меня есть файл QML, который я пытаюсь прочитать, QVariantList, который содержит QObject Configuration::AmbientLoopConfiguration и его свойства. Я вижу, что в списке есть экземпляр объекта, который я создаю в другом месте, как и ожидалось в QML, но ожидаемые свойства mName и mFile не видны (не определены). Чего мне не хватает, чтобы получить доступ к mFile и mName?
configuration.cpp
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#include "qdom.h"
#include
#include
class Configuration : public QObject
{
Q_OBJECT
public:
Configuration();
/* non zone members */
Q_PROPERTY(QVariantList getAmbientLoopConfigurations READ getAmbientLoopConfigurations CONSTANT)
struct AmbientLoopConfiguration {
QString mName = "foo";
QString mFile = "bar";
};
struct ShellyConfiguration {
QString mID;
QString mIP;
};
struct CameraConfiguration {
QString mName;
QString mLowRTSP;
QString mMedRTSP;
QString mHighRTSP;
};
struct PresetConfiguration {
QString mName;
QString mColorCode;
};
struct SceneItemConfiguration {
bool mState;
QString mDevice;
QString mColorCode;
};
struct SceneGroupConfiguration {
QString mName;
QList mZones;
QList mSceneItems;
};
/* zone members */
struct LightConfiguration {
QString mName;
QString mShellyID;
};
struct SensorConfiguration {
QString mName;
QString mID;
};
struct ZoneConfiguration {
QString mName;
QString mColorCode;
QList mLightConfigurations;
QList mSensorConfigurations;
};
/* base config object */
struct Config
{
QList mZoneConfigurations;
QList mShellyConfigurations;
QList mCameraConfigurations;
QList mPresetConfigurations;
QList mSceneGroupConfigurations;
QList mAmbientLoopConfigurations;
};
Q_INVOKABLE Config getConfiguration() { return this->config; };
QVariantList getAmbientLoopConfigurations() {
QVariantList l;
for (Configuration::AmbientLoopConfiguration &c : this->config.mAmbientLoopConfigurations) {
l.append(QVariant::fromValue(c));
}
return l;
};
Q_INVOKABLE bool loadBaseConfiguration();
Q_INVOKABLE bool loadUserDefinedConfiguration();
private:
Config config;
QDomDocument validateConfigFile(QString config);
};
#endif // CONFIGURATION_H
main.cpp
Configuration *configuration = new Configuration();
configuration->loadBaseConfiguration();
configuration->loadUserDefinedConfiguration();
..
qmlRegisterType("smah.configuration", 1, 0, "Configuration");
qmlRegisterType("smah.configuration.ambient", 1, 0, "ConfigurationAmbient");
..
engine.rootContext()->setContextProperty("configuration", configuration);
Media.qml
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.13
import QtMultimedia
import smah.configuration
import smah.configuration.ambient
import "."
import "qrc:/SMAHComponents"
Page {
id: page
x: 0
Component.onCompleted: {
console.log(configuration.getAmbientLoopConfigurations[0])
console.log(configuration.getAmbientLoopConfigurations[0].mName)
}
}
Вывод приведенного выше кода
QVariant(Configuration::AmbientLoopConfiguration, )
undefined
Подробнее здесь: [url]https://stackoverflow.com/questions/79862029/cant-access-all-class-members-in-qvariantlist-from-qml[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия