未定义ReferenceError委托。为什么?

时间:2015-08-10 09:04:04

标签: qt qml qt5 qtquick2

我有一个Qt Creator项目,其中包含以下目录布局: Project layout

现在,在文件public interface ServiceCall { public JsonObject invoke(JsonArray params) throws ServiceCallException; } public class ServiceProcessor { private static final Map<String, ServiceCall> SERVICE_CALLS = new HashMap<>(); static { SERVICE_CALLS.put("toasty", new ToastCall()); } public String process(String messageStr) { try { JsonObject message = Json.createReader(new StringReader(messageStr)).readObject(); if (message.containsKey("method")) { String method = message.getString("method"); ServiceCall serviceCall = SERVICE_CALLS.get(method); if (serviceCall != null) { return serviceCall.invoke(message.getJsonArray("params")).toString(); } else { return fail("Unknown method: " + method); } } else { return fail("Invalid message: no method specified"); } } catch (Exception e) { return fail(e.message); } } private String fail(String message) { return Json.createObjectBuilder() .add("status", "failed") .add("message", message) .build() .toString(); } private static class ToastCall implements ServiceCall { public JsonObject invoke(JsonArray params) throws ServiceCallException { //make toast here } } } 中,我尝试包含main.qml

UePeopleItemDelegate.qml

项目编译和构建没有问题,但是,我得到以下运行时错误,这与QML有关:

  

qrc:/main.qml:43:ReferenceError:未定义UePeopleItemDelegate。

错误是指行

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtMultimedia 5.0
import QtQuick.Layouts 1.0
import QtTest 1.1

import "gui/delegates"

ApplicationWindow {
    id: ueWindowMain
    title: qsTr("TestClient ver 1.00")
    width: Screen.desktopAvailableWidth
    height: Screen.desktopAvailableWidth
    visible: true    
    opacity: 1.0

    contentOrientation: Qt.LandscapeOrientation

    color: "black"

    ListView {
        id: uePeopleListView
        snapMode: ListView.SnapToItem
        highlightRangeMode: ListView.ApplyRange
        anchors.right: parent.right
        anchors.rightMargin: 0
        anchors.bottom: parent.top
        anchors.bottomMargin: -128
        anchors.left: parent.left
        anchors.leftMargin: 0
        anchors.top: parent.top
        anchors.topMargin: 0
        orientation: ListView.Horizontal
        flickableDirection: Flickable.HorizontalFlick
        antialiasing: true
        delegate: UePeopleItemDelegate
        model: ListModel {
            ListElement {
                name: "Grey"
                colorCode: "grey"
            }

            ListElement {
                name: "Red"
                colorCode: "red"
            }

            ListElement {
                name: "Blue"
                colorCode: "blue"
            }

            ListElement {
                name: "Green"
                colorCode: "green"
            }
        }
    }
}
delegate: UePeopleItemDelegate

。为什么main.qml无法识别?我用UePeopleItemDelegate语句导入了它。我错过了什么?

1 个答案:

答案 0 :(得分:4)

也许问题是你没有使用大括号。 试试这个:

delegate: UePeopleItemDelegate {}