I'm developing a trace window for a GUI. I'm using a TableView element on the QML side to display data that will be constantly updating. How can I populate this element with data? The numbers of elements changes, along with each element's data, every few milliseconds.
I'm thinking a signals/slots implementation would be ideal, when the data changes, produce a signal that triggers a slot function to update the values shown in the TableView? Something along those lines.
Thanks in advance!
main.qml
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.1
import QtQuick 2.1
....
TableView {
anchors.fill: parent
id: traceTable
//table data comes from a model
model: traceTableModel
//Component.onCompleted: classInstance.popAndDisplayMsg(classInstance)
TableViewColumn { role: "index"; title: "Index"; width: 0.25 * mainWindow.width; }
TableViewColumn { role: "type"; title: "Type"; width: 0.25 * mainWindow.width; }
TableViewColumn { role: "uid"; title: "ID"; width: 0.25 * mainWindow.width; }
TableViewColumn { role: "timestamp"; title: "Timestamp"; width: 0.25 * mainWindow.width; }
}
....
main.cpp
#include "class_header.hpp"
#include <QtQuick/QQuickView>
#include <QGuiApplication>
#include <QQmlContext>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
class_name instance;
view.rootContext()->setContextProperty("classInstance", &instance);
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qml/main.qml"));
view.show();
return app.exec();
}
class_header.hpp
#ifndef class_name_HPP
#define class_name_HPP
#include <QtQuick/QQuickItem>
#include <polysync_core.h>
#include <glib.h>
#include <QString>
#include <QDebug>
class class_name : public QQuickItem
{
Q_OBJECT
//Maybe some Q_Properties here?
public:
//constructor
class_name(QQuickItem *parent = 0);
//deconstructor
~class_name();
signals:
void dataChanged();
public slots:
int updateInfo(//pass some data);
};
#endif // class_name_HPP