我有以下代码:
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组件上,但有些帮助可以帮助理解错误信息的实际含义会有所帮助。
答案 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指针,它会接受它。 对每个标签/页面对执行相同的操作。