qt从多个文件中获取到多分QList数据,每一个文件对应一份QList数据,每份数据都包含有图片,需要把每份QList数据发动到qml中,并用listview把图片和文字显示出来,请给出详细的实现代码
时间: 2024-05-15 13:14:56 浏览: 196
以下是一个示例代码,假设有三个文件,每个文件中包含一份QList数据,每个QList数据包含一个图片和一个文字:
main.cpp
```cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QList>
struct Data {
QString text;
QString image;
};
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QList<Data> list1;
QList<Data> list2;
QList<Data> list3;
// 从文件中读取数据填充到 QList
// ...
QQmlApplicationEngine engine;
// 把 QList 数据发动到 QML 中
engine.rootContext()->setContextProperty("dataList1", QVariant::fromValue(list1));
engine.rootContext()->setContextProperty("dataList2", QVariant::fromValue(list2));
engine.rootContext()->setContextProperty("dataList3", QVariant::fromValue(list3));
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
```
main.qml
```qml
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("QList Demo")
GridLayout {
rows: 3
columns: 1
spacing: 10
Component {
id: dataItem
Image {
width: 100
height: 100
source: model.image
}
Label {
text: model.text
}
}
ListView {
id: listView1
model: dataList1
delegate: dataItem
}
ListView {
id: listView2
model: dataList2
delegate: dataItem
}
ListView {
id: listView3
model: dataList3
delegate: dataItem
}
}
}
```
在这个示例中,我们通过 `QQmlApplicationEngine` 发动了三个 QList 数据到 QML 中,分别命名为 `dataList1`、`dataList2` 和 `dataList3`。然后在 QML 中,我们使用 `ListView` 来展示这些数据,每个列表项包含一个图片和一个文字,使用了 `Component` 来定义列表项的显示方式。
阅读全文