5

例如,我希望创建一个包含 100 个文本编辑的 qml 窗口,如何在循环中创建它?那可能吗?

4

2 回答 2

14

循环是命令式代码,因此它不是 QML,而是 Javascript 或 C++。所以当然,你可以做到这一点(例如通过在 JS 循环中嵌入 Qt.createComponent() 调用),但在 QML 中,认为声明性更好,这意味着你不“做”事情,你“定义” ' 事物 :

import QtQuick 2.0

Rectangle {
    id: base;
    width: 400;
    height: 800;

    Column {
        spacing: 5; // a simple layout do avoid overlapping

        Repeater {
            model: 10; // just define the number you want, can be a variable too
            delegate: Rectangle {
                width: 200;
                height: 20;
                color: "white";
                border { width: 1; color: "black" }
                radius: 3;

                TextInput {
                    anchors.fill: parent;
                }
            }
        }
    }
}

从 QML 的角度来看,这种方式真的更强大、更干净!

于 2013-03-27T12:19:26.610 回答
5

查看 QML 中继器元素http://doc.qt.io/qt-4.8/qml-positioners.html

于 2013-03-18T13:58:58.237 回答