-1

我有以下代码:

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,并且它的唯一使用示例并没有提供对问题的深入了解。

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

4

1 回答 1

2

您收到的错误意味着 Tab { } 项目中的“页面”属性不能接受字符串(或 url)内容,它需要一个项目或派生组件。

所以我很确定你的 AnnualBudget 或 SavingsGoals 文件可以作为组件实例化,因为它们在同一个文件夹中(所以不需要导入)并且文件名的第一个字母是大写的,所以 QML 引擎自动允许你这样做:

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

FinancialDetails {
    id: financePage;
}

所以'financePage'是一个ID,所以对于QML引擎它是一个QQuickItem指针,它会接受它。只需对每个选项卡/页面对执行相同操作即可。

于 2013-03-26T19:42:49.777 回答