【问题标题】:Resolve resource ambiguity in QML imports解决 QML 导入中的资源歧义
【发布时间】:2016-06-09 13:12:07
【问题描述】:

我需要同时使用 QtLabs 和 QtQuickControls。两者都有Button 类型,但我需要在QuickControls 中使用那个。 QML 文件正在挑选实验室中的按钮。如何强制它使用 QuickControls 中的那个?

import QtQuick 2.6
import QtQuick.Controls 1.5 //This is what I need the QML file to pick button from
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0
import QtQuick.Dialogs 1.2
import QtMultimedia 5.6
import Qt.labs.controls 1.0 //This is where it is picking Button from

【问题讨论】:

    标签: qt qml qtquick2 qtquickcontrols


    【解决方案1】:

    解决此问题的一种快速/简单的方法是使用 as 关键字进行命名导入。为导入命名后,模块中的所有组件都可以通过该名称访问。

    导入示例:

    import QtQuick 2.6
    import QtQuick.Controls 1.5 as Ctrl1 //name for old controls
    import QtQuick.Controls.Styles 1.4
    import QtGraphicalEffects 1.0
    import QtQuick.Dialogs 1.2
    import QtMultimedia 5.6
    import Qt.labs.controls 1.0 as Ctrl2 //name for new controls
    
    Ctrl2.ApplicationWindow {
        id: root
        visible: true
        width: 400
        height: 300
    
        Column {
            anchors.fill: parent
    
            Ctrl1.Button {
                text: qsTr("one")
            }
    
            Ctrl2.Button {
                text: qsTr("two")
            }
        }
    }
    

    这种方法很容易变得过于冗长。在这种情况下,我会将不同文件中的内容分开,物理上分离有问题的导入。

    【讨论】:

    • 谢谢!我完全忘记了这种方法。
    • 不客气。如果新控件中缺少某些内容,请考虑发出功能请求here。它们现在正在积极开发,这是改进/整合它们的正确时机。 :)
    • 你好!我想报告 QML 的发现,但在“创建问题”的任何下拉菜单中都找不到选择 QML 的选项。
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多