Я использую Qt 5.0.2 и QtQuick 2.0, чтобы попытаться создать очень простое приложение QML, отображающее плитки.
Я хочу, чтобы плитки создавались динамически с помощью повторителя, взаимодействующего с C++.
Я нашел пример того, как это сделать (MineHunt
), но в этом примере используются QtQuick 1 и Qt 4.7.
Вот мой код:
import QtQuick 2.0
import "tiles"
Rectangle {
width: 360
height: 360
Grid {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
anchors.margins: 5
columns: 3
spacing: 10
Repeater {
id: repeater
model: tiles
delegate: tile
}
}
MouseArea {
anchors.fill: parent
onClicked: {
Qt.quit();
}
}
}
Этот файл импортирует папку с именем tiles
, содержащую другой файл QML с именем tile.qml
, который содержит следующий код:
import QtQuick 2.0
Rectangle {
id: tile
width: 100
height: 62
color: "#ff0303"
MouseArea {
anchors.fill: parent
onClicked: {
var row = Math.floor(index / 3)
var col = index - (Math.floor(index / 3) * 3)
play(row, col)
}
}
}
У меня также есть класс, который реализует методы, необходимые для предоставления модели tiles
.
Он компилируется нормально, но когда я его запускаю, я получаю следующую ошибку:
ReferenceError: tile is not defined
Что не так с моим кодом?
qmldir
, как вы упомянули, и изменил строку делегата наdelegate: Tile {}
, но Qt Creator подчеркивает эту строку с ошибкойUnknown component (M300)
. Я попытался добавить команду импорта:import "tiles/tile.qml" 1.0
, но все еще получаю сообщение об ошибке. Есть идеи ? 25.06.2013