gpt4 book ai didi

c++ - Qt5 - 在 QML TableView 中显示动态数据模型

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:33 30 4
gpt4 key购买 nike

我正在为 GUI 开发跟踪窗口。我在 QML 端使用 TableView 元素来显示将不断更新的数据。我怎样才能用数据填充这个元素?元素的数量以及每个元素的数据每隔几毫秒就会发生变化。

我认为信号/槽实现是理想的,当数据发生变化时,产生一个信号来触发槽函数来更新 TableView 中显示的值?类似的东西。

提前致谢!

主.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

最佳答案

您对 QML 模型的使用很奇怪。您不想为每一列使用自定义角色。这是没有意义的。您也不需要自定义 QQuickItem 类。

基本流程是:

  1. 正确实现派生自 QAbstractListModelQAbstractTableModel 的类。

  2. 将此类的实例绑定(bind)到 QML View 的模型。

这里是供您细读的完整(如在编译和运行中)引用:

关于c++ - Qt5 - 在 QML TableView 中显示动态数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298124/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com