2016-06-09 12 views
2

Ich muss sowohl QtLabs und QtQuickControls verwenden. Beide haben den Button Typ, aber ich muss den in QuickControls verwenden. Die QML-Datei wählt den Knopf in den Labors aus. Wie erzwinge ich es, das in QuickControls zu verwenden?Resolve Ressourcenmehrdeutigkeit in QML-Importen

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 

Antwort

3

Eine schnelle/einfache Möglichkeit, um das Problem zu lösen, ist eine benannte Import mit dem as Schlüsselwort zu machen. Nachdem Sie dem Import einen Namen gegeben haben, kann über diesen Namen auf alle Komponenten des Moduls zugegriffen werden.

Beispiel mit Ihren Importen:

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

Dieser Ansatz kann zu ausführlich leicht werden. In diesem Fall würde ich den Inhalt in verschiedene Dateien aufteilen und die betreffenden Importe physisch trennen.

+0

Vielen Dank! Ich habe diesen Ansatz völlig vergessen. –

+1

Gern geschehen. Ziehen Sie in Betracht, eine Feature-Anforderung [hier] (http://bugreports.qt.io) abzusetzen, wenn in den neuen Steuerelementen etwas fehlt. Sie werden gerade aktiv entwickelt und das ist der richtige Zeitpunkt, sie zu verbessern/zu integrieren. :) – BaCaRoZzo

+0

Hey da! Ich wollte einen Fund von QML melden, aber ich finde keine Option zur Auswahl von QML in einem der Dropdown-Menüs in "Problem erstellen". –