ClickableRectangle.qml
import QtQuick 2.0;
Rectangle
{
width: 40; height: 40; x: 0; y: 0;
// Fluorescent green
color:'#23FF23';
border.color: 'black'; border.width: 2; radius: 100
property int key;
signal iHaveBeenCalled (var key);
MouseArea
{
anchors.fill: parent;
onClicked:
{
iHaveBeenCalled.call (0, key)
}
}
}
GUIControllers.js
.import "GlobalVariablesAndFunctions.js" as GlobalVariablesAndFunctions
function createDynamicRectangles ()
{
/// Returns a Component object created using the QML file at the specified url, or null if an empty
/// string was given.
var component = Qt.createComponent ("ClickableRectangle.qml");
/// The returned component's Component::status property indicates whether the component was
/// successfully created.
if (component.status === Component.Ready)
{
/// arrayOfXAxixOfPoints and arrayOfYAxixOfPoints are the arrays holding x and y axis coordinates
/// of the rectangles (respectively) to be plotted.
/// Both these arrays are techincally supposed to have equal number of points which will the
/// determine number of rectangles to be plotted.
for (var i = 0; i < GlobalVariablesAndFunctions.arrayOfXAxixOfPoints.length; i++)
{
dynamicRectangles[i] = component.createObject (vehicleDrivingAreaRect, {x: 0, y: 0})
/// After an object of the component is created at a specified default position (0, 0) in our
/// case, we can calculate and reset its position and other properties at leisure as follows.
dynamicRectangles[i].x = GlobalVariablesAndFunctions.arrayOfXAxixOfPoints[i] - (dynamicRectangles[i].width / 2)
dynamicRectangles[i].y = GlobalVariablesAndFunctions.arrayOfYAxixOfPoints[i] - (dynamicRectangles[i].height / 2)
}
numberOfDynamicRectanglesActive = GlobalVariablesAndFunctions.arrayOfXAxixOfPoints.length
}
}
main.qml
import QtQuick 2.0
import "GUIControllers.js" as GUIControllers
Rectangle
{
id: rootContainer
width: 360
height: 360
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
GUIControllers.createDynamicRectangles()
}
}
}
标题中的错误显示在此行的 GUIControllers.js 中:
if (component.status === Component.Ready)
答案 0 :(得分:5)
我们需要在 GUIControllers.js as follows中导入 QtQuick 2.0 :
.import QtQuick 2.0 as QtQuickModuleImportedInJS
然后,如果我们按如下方式编辑罪魁祸首,则错误消失:
if (component.status === QtQuickModuleImportedInJS.Component.Ready)