26 августа 2019 г. 4:26

QList<QTimer> послать в qml вместо QList<QObject>

Всем привет.
Пытаюсь послать из крестовой части лист QList но прилетает туда это как обьект.
Но если я конвертну лист этих таймеров в лист QObject но на стороне qml нормально прилетают эти таймеры.
А теперь вопрос, как можно без конвертации послать лист QTimer чтоыб qml это правильно увидит?
То есть конвертация не вариант вообще.
Заранее спасибо.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
1

Привет.

Нужно регистрировать мета тип, например так.

message.h

#ifndef MESSAGE_H
#define MESSAGE_H

#include <QMetaType>
#include <QStringList>


class Message
{
public:
    Message();
    Message(const Message &other);
    ~Message();

    Message(const QString &body, const QStringList &headers);

    QString body() const;
    QStringList headers() const;

private:
    QString m_body;
    QStringList m_headers;
};

Q_DECLARE_METATYPE(Message);

#endif // MESSAGE_H

message.cpp

#include "message.h"

Message::Message()
{
}

Message::Message(const Message &other) :
    m_body(other.m_body),
    m_headers(other.m_headers)
{
}

Message::~Message()
{
}

Message::Message(const QString &body, const QStringList &headers) :
    m_body(body),
    m_headers(headers)
{

}

QString Message::body() const
{
    return m_body;
}

QStringList Message::headers() const
{
    return m_headers;
}

main.cpp

#include <QCoreApplication>

#include "message.h"
#include <QVariant>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Message message("Body", {"Header"});
    QVariant varMessage = QVariant::fromValue(message);

    if (varMessage.canConvert<Message>())
    {
        Message fromVar = varMessage.value<Message>();
        qDebug() << fromVar.body();
    }

    return a.exec();
}

Но для QML возможно нужно будет использовать qmlRegisterType ещё, чтобы его QML понимал

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

A
29 марта 2020 г. 12:14
Alexanderv66

C++ - Тест 003. Условия и циклы

  • Результат:71баллов,
  • Очки рейтинга1
A
29 марта 2020 г. 12:05
Alexanderv66

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
DE
28 марта 2020 г. 15:13
Denis Erokhin

C++ - Тест 005. Структуры и Классы

  • Результат:100баллов,
  • Очки рейтинга10
Последние комментарии
27 марта 2020 г. 14:40
Евгений Легоцкой

Добрый день. В конце пятой статьи скачать можете.
27 марта 2020 г. 14:28
mkdir _

Здравствуйте, а можно, пожалуйста, ссылку на целые исходники, если есть?
27 марта 2020 г. 4:36
Евгений Легоцкой

Скорее всего также, как и для установки всех остальных переменых в CMake, через использование set
27 марта 2020 г. 2:47
Андрей Янкович

Ошибка с ярлыками в Windows исправлена в версиии 1.4.0.4
Сейчас обсуждают на форуме
30 марта 2020 г. 4:16
Евгений Легоцкой

Попробуйте запустить через плейлист, а не через setMedia. Пример есть в этой статье
30 марта 2020 г. 3:25
Евгений Легоцкой

Добрый день. Почитайте документацию, в исходниках этой библиотеки есть исходнные классы логгеров. Вам наверняка достаточно только правильно вызвать пару функций, чтобы задать имя файла…
30 марта 2020 г. 3:17
Евгений Легоцкой

Нет, не нужно ничего умножать, если у вас включена поддержа High DPI в приложении а QML, то достаточно держать в памяти, что все значения задаются в DPI, и просто задаёте значения равные DPI сра…
27 марта 2020 г. 10:00
Михаиллл

Оказывается нужно сделать столбец уникальным ALTER TABLE public.drivers ADD UNIQUE (agregator1_id); Потом так работает INSERT INTO drivers( name_driver, surname, middle_name, agr…
s
27 марта 2020 г. 8:25
shuric

Спасибо за ответы. Скорее всего оставлю на неопределенное время под macOS. Хоть будет полезно другим начинающим разработчикам.
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB