Получение структуры C ++ в QML как типC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Получение структуры C ++ в QML как тип

Сообщение Anonymous »

Я могу получить данные struct в QML, но я не могу получить их как тип. Имя приложения-это Datalogstream и вот мой структура:

Код: Выделить всё

#ifndef SERIALPORTSETTINGS_H
#define SERIALPORTSETTINGS_H

#include 
#include 
#include 
#include 

struct SerialPortSettings {
Q_GADGET
QML_VALUE_TYPE(serialPortSettings)

Q_PROPERTY(QString name MEMBER name)
Q_PROPERTY(qint32 baudRate MEMBER baudRate)
Q_PROPERTY(QString stringBaudRate MEMBER stringBaudRate)
Q_PROPERTY(QSerialPort::DataBits dataBits MEMBER dataBits)
Q_PROPERTY(QString stringDataBits MEMBER stringDataBits)
Q_PROPERTY(QSerialPort::Parity parity MEMBER parity)
Q_PROPERTY(QString stringParity MEMBER stringParity)
Q_PROPERTY(QSerialPort::StopBits stopBits MEMBER stopBits)
Q_PROPERTY(QString stringStopBits MEMBER stringStopBits)
Q_PROPERTY(QSerialPort::FlowControl flowControl MEMBER flowControl)
Q_PROPERTY(QString stringFlowControl MEMBER stringFlowControl)
Q_PROPERTY(bool localEchoEnabled MEMBER localEchoEnabled)
Q_PROPERTY(QString delimiter MEMBER delimiter)
Q_PROPERTY(QString samplingFrequency MEMBER samplingFrequency)
Q_PROPERTY(QString headerLength MEMBER headerLength)
Q_PROPERTY(bool mergePlots MEMBER mergePlots)

public:
QString name;
qint32 baudRate;
QString stringBaudRate;
QSerialPort::DataBits dataBits;
QString stringDataBits;
QSerialPort::Parity parity;
QString stringParity;
QSerialPort::StopBits stopBits;
QString stringStopBits;
QSerialPort::FlowControl flowControl;
QString stringFlowControl;
bool localEchoEnabled;
QString delimiter;
QString samplingFrequency;
QString headerLength;
bool mergePlots;
};

Q_DECLARE_METATYPE(SerialPortSettings)

#endif // SERIALPORTSETTINGS_H
Я затем добавил это в Source под QT_ADD_QML_MODULE . У меня есть portselectionservice.cpp/.h , который является QML_ELEMENT , который имеет все установки и getter для этого SerialPortSettings . PortSelectionService.cpp/.h можно вызвать через portselection.qml по его типу после импорта datalogstream в QML. И на щелчке кнопки данные struct отправляются с portselection.qml на plotstream.qml .
и я пытаюсь использовать этот тип в качестве свойства с:

import DataLogStream

ApplicationWindow {
width: 1080
height: 720

property SerialPortSettings portSelectionSettings
// ....
}

Теперь, когда я пытаюсь использовать SerialPortSettings или SerialPortSettings в качестве типа свойства, я получаю ошибку SerialPortSettings не является типом для serialportSettings . Но если я просто использую его как var - свойство var portselectionsettings - я могу увидеть данные.
Как мне использовать правильный тип здесь, не вызывая эту ошибку?

Код: Выделить всё

import QtQuick.tooling 1.2

// This file describes the plugin-supplied types contained in the library.
// It is used for QML tooling purposes only.
//
// This file was auto-generated by qmltyperegistrar.

Module {
Component {
file: "plotstreamservice.h"
name: "PlotStreamService"
accessSemantics: "reference"
prototype: "QObject"
exports: ["DataLogStream/PlotStreamService 0.0"]
exportMetaObjectRevisions: [0]
Property { ...}
}
Component {
file: "portselectionservice.h"
name: "PortSelectionService"
accessSemantics: "reference"
prototype: "QObject"
exports: ["DataLogStream/PortSelectionService 0.0"]
exportMetaObjectRevisions: [0]
Property { ...}
Method { name: "start" }
}
Component {
file: "serialportsettings.h"
name: "SerialPortSettings"
accessSemantics: "value"
exports: ["DataLogStream/serialPortSettings 0.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
Property { ... }

}
}
SerialportSettings существует, но типистема не может ее поймать.

Подробнее здесь: https://stackoverflow.com/questions/795 ... ml-as-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»