解决QML导入中的资源歧义

时间:2016-06-09 13:12:07

标签: qt qml qtquick2 qtquickcontrols

我需要同时使用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

1 个答案:

答案 0 :(得分:3)

解决问题的快速/简便方法是使用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")
        }
    }
}

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