Тип Повторитель3D используется для создания большого количества похожих элементов. Но если я попытаюсь заполнить модель большим объемом данных, она будет работать медленно. Например, у меня есть список из 500 элементов:
QQmlApplicationEngine engine;
QList dataList;
for (int i = 0; i < 500; i++) {
for (int j = 0; j < 500; j++) {
dataList.append(new DataObject("Item 1:", 1, j * 8, i * 8, 1));
}
}
engine.rootContext()->setContextProperty("myModel", QVariant::fromValue(dataList));
Я установил этот список в качестве модели в Repeater3d:
Repeater3D {
id: _3DRepeater
model: myModel
Model {
id: sphere
x: model.modelData.x
y: model.modelData.y
z: model.modelData.z
source: "#Sphere"
scale.z: model.modelData.radius * 0.05
scale.y: model.modelData.radius * 0.05
scale.x: model.modelData.radius * 0.05
materials: principledMaterial
}
}
Это класс DataObject:
class DataObject : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(int radius READ radius WRITE setRadius NOTIFY radiusChanged)
Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged)
Q_PROPERTY(int y READ y WRITE setY NOTIFY yChanged)
Q_PROPERTY(int z READ z WRITE setZ NOTIFY zChanged)
public:
DataObject (const QString& name, int radius, int x, int y, int z) : m_name(name), m_radius(radius), m_x(x), m_y(y), m_z(z) {};
...
private:
QString m_name;
int m_radius;
int m_x;
int m_y;
int m_z;
};
Подробнее здесь: https://stackoverflow.com/questions/782 ... -very-slow
QML Repeater3D рендеринг очень медленный ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Очень неожиданная производительность fprintf против std::ofstream (fprintf очень медленный)
Anonymous » » в форуме C++ - 0 Ответы
- 84 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Пользовательский тип C++ из модуля QML не определен при использовании внутри файла QML.
Anonymous » » в форуме C++ - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-