2016-06-09 59 views
2

我需要同時使用QtLabs和QtQuickControls。兩者都有Button類型,但我需要使用QuickControl中的那個。 QML文件正在實驗室中選擇按鈕。我如何強制它使用QuickControl中的那個?解決QML導入中的資源歧義問題

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 

回答

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") 
     } 
    } 
} 

這種方法可以很容易變得太冗長。在這種情況下,我會將不同文件中的內容分開,從物理上分離有問題的導入。

+0

謝謝!我完全忘記了這種方法。 –

+1

不客氣。如果新控件中缺少某些功能,請考慮發佈功能請求[here](http://bugreports.qt.io)。它們現在正在積極開發,現在是改進/整合它們的合適時機。 :) – BaCaRoZzo

+0

嘿!我想報告QML的一個發現,但是我找不到在「創建問題」的任何下拉菜單中選擇QML的選項。 –