无法使用Qt.resolvedUrl将QString分配给QQuickItem *

时间:2013-03-24 11:18:58

标签: qml

我有以下代码:

Tabs {
    Tab {
        id: financialDetailsTab
        title: i18n.tr("Financial Details")
        page: Qt.resolvedUrl("FinancialDetails.qml")
    }
    Tab {
        id: monthlyBudgetTab
        title: i18n.tr("Monthly Budget")
        page: Qt.resolvedUrl("MonthlyBudget.qml")
    }
    Tab {
        id: annualBudgetTab
        title: i18n.tr("Annual Budget")
        page: Qt.resolvedUrl("AnnualBudget.qml")
    }
    Tab {
        id: savingsGoalsTab
        title: i18n.tr("Savings Goals")
        page: Qt.resolvedUrl("SavingsGoals.qml")
    }
}

产生以下错误:

Unable to assign QString to QQuickItem*
Unable to assign QString to QQuickItem*
Unable to assign QString to QQuickItem*
Unable to assign QString to QQuickItem*

在使用Qt::resolvedUrl的行上。 Tabs组件是Ubuntu SDK的一部分,而不是Qt Quick,并且它的唯一example组件无法提供对此问题的深入了解。

我在MainView组件之外添加了与Tabs的属性完全相同的行,问题在那里并不明显,让我相信问题在于Ubuntu零件。虽然问题可能出在Ubuntu组件上,但有些帮助可以帮助理解错误信息的实际含义会有所帮助。

1 个答案:

答案 0 :(得分:2)

您获得的错误意味着Tab {}项的“page”属性不能接受字符串(或url)内容,它需要Item或派生组件。

所以我非常确定您的AnnualBudget或SavingsGoals文件可以作为组件进行实例化,因为它们位于同一文件夹中(因此无需导入)并且文件名首字母为大写,因此QML引擎会自动允许您执行此操作:

Tabs {
    Tab {
        id: financialDetailsTab
        title: i18n.tr("Financial Details")
        page: financePage;
    }
}

FinancialDetails {
    id: financePage;
}

所以'financePage'是一个ID,所以对于QML引擎来说,它是一个QQuickItem指针,它会接受它。 对每个标签/页面对执行相同的操作。