2016-06-09 60 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的选项。 –