BlinCT
March 2, 2017, 7:45 p.m.

Обращение в QML к стринговым данным или ENUM

C++, QML

Всем привет. Такой вопрос возник, есть куча стрингов, примерно такого типа

const QString Message095_Data::m_strTherapyType = "therapy_type";
const QString Message095_Data::m_strTherapyStep = "therapy_step";
const QString Message095_Data::m_strResults = "results";
const QString Message095_Data::m_strRecordedData = "recorded_data";
const QString Message095_Data::m_strExaminationType = "examination_type";
const QString Message095_Data::m_strSourceFilePath = "source_file_path";
const QString Message095_Data::m_strData = "data";
И таких данных(в моем случаи ключи) много. Удобство в том что в QML к ним можно обратится по точке, типа blabla.results и мы обращаемся к данным. Но, минус в том что если я где то пишу код то сделать ошибку даже в одной букве легко, и найти потом не просто. Мысль такая что как то все стринги обернуть в enum и если я буду обращаться то class_enum::results то это уже удобно но как потом к ним обращаться в QML? Буду признателен за совет или пример какой нибудь просто.
2
The question is asked by the articleQML - Tutorial 028. Registration of custom enum in QML

Do you like it? Share on social networks!

4
Evgenii Legotckoi
  • March 3, 2017, 11:18 a.m.

День добрый.
Для начала не могли бы привести пример, как эти строки выглядят в самом классе, например, пример класса с одной строкой. А также пример вызова в QML Этих строк.

    BlinCT
    • March 3, 2017, 2:22 p.m.

    Например как я обращаюсь к крестовом коде к ключам этим:

    void DataSystemSource::OnDataReceived(QString strDataType, QVariantMap arr_vData)
    {
        if (strDataType == "measuring_data_system")
        {
            QList<CSystemSample*> *pSampleList;
    
            qint32 nPointsCount = arr_vData["count"].toInt();
            for (qint32 nPointIndex = 0; nPointIndex < nPointsCount; ++nPointIndex)
    все стринги в кавычках это такие же ключи, просто я не все показал, их там много) А вот код к QML:
    TextValueItem {
                    width: parent.width
                    text: "Průměrné X"
                    value: resultsPage.results.avg_x.toFixed(1) + " mm"
                }
                TextValueItem {
                    width: parent.width
                    text: "Průměrné Y"
                    value: resultsPage.results.avg_y.toFixed(1) + " mm"
                }
                TextValueItem {
                    width: parent.width
                    text: "Standartni odchylka X"
                    value: resultsPage.results.stand_dev_x.toFixed(1) + " mm"
                }
    Все что идет после result это такие же стринговые ключи, для вывода в QML все они запихиваются просто в QVariantMap как ключ и значение.
      Evgenii Legotckoi
      • March 3, 2017, 2:27 p.m.

      От какого класса наследованы DataSystemSource и Message095_Data ?

        BlinCT
        • March 3, 2017, 2:31 p.m.

        наследованы DataSystemSource от QObject а Message095_Data так же от QObject

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Last comments
          • AK
            April 1, 2025, 11:41 a.m.
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            March 9, 2025, 9:02 p.m.
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            March 9, 2025, 4:14 p.m.
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
          • ИМ
            Nov. 22, 2024, 9:51 p.m.
            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          • Evgenii Legotckoi
            Oct. 31, 2024, 11:37 p.m.
            Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup