C ++ vector <> в QML для привязки значений barseries - PullRequest
0 голосов
/ 21 апреля 2020

Я делаю небольшой проект для подключения ESP8266 напрямую к приложению android.

Общий вид - я храню серию показаний датчиков на ESP и считываю их с помощью C ++ учебный класс. После этого я передаю эти значения как list<int> в код QML.

До этого момента все работало нормально. Я могу отправить и распечатать значения в конце QML. Однако, когда я передаю их в свойство barseries.values, оно не работает.

Для простоты я продемонстрирую проблему с фиксированным list<int>.

C ++ методом в ApplicationData:

std::vector<int> ApplicationData::getlast12hours(void)
{
    std::vector<int> myList = {1,3,3,4,5,6,10,12,30,45,55,12};
    return myList;
}

c ++ main. cpp

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication app(argc, argv);
    QQuickView view;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    ApplicationData data;
    view.rootContext()->setContextProperty("applicationData", &data);
    view.setSource(url);
    view.show();
    return app.exec();
}

main.qml

MainForm {
      //somecode
      OperationForm
      {
              property var myarray:applicationData.getlast24hours()
              property var mytest:[1,3,3,4,5,6,10,12,30,45,55,12]
              bs_hist12h.values: [myarray[0],myarray[1],myarray[2],myarray[3],myarray[4],myarray[5],myarray[6],myarray[7],myarray[8],myarray[9],myarray[10],myarray[11]]
      }
      //somecode
}

Теперь вот проблема; когда я устанавливаю bs_hist12h.values: myarray, он не работает. Но когда я установил, как указано выше, это работает. И когда я установил его как bs_hist12h.values: mytest, он тоже работает. Самое смешное, что при отладке myarray и mytest - это один и тот же объект. На самом деле, способ, которым я занимаюсь, решает проблему, но очень уродливо. Интересно, есть ли более сложный подход?

Наконец, операцияform.ui.qml

//some code
ChartView {
//some code
    BarSeries {
        name: "BarSeries"
        axisX: BarCategoryAxis { categories: ["00","01","02","03","04","05","06","07","08","09","10","11"]} 
        BarSet {
            id: bs_hist12h
            }
//somecode
    }
}
//somecode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...