2017-08-09 75 views
0

下面的代碼是和我的問題說明,即時導入和限定爲EventListner qml文件突出顯示爲藍色,但它不起作用,當我使用它。Qml導入本地文件作爲限定符不起作用

main.qml:

import QtQuick 2.7 
import QtQuick.Window 2.2 
import QtQuick.Controls 2.1 
import "/qtrealis/untitled15/EventListner.qml" as EventListner 
Window { 
visible: true 
width: 640 
height: 480 
title: qsTr("Hello World") 
Button{ 
    onClicked:EventListner.color="blue"; 
} 

EventListner.qml:

import QtQuick 2.7 
import QtQuick.Window 2.2 
Item { 
property string color: "dark" 
onColorChanged: console.log("event received!") 
} 

illustration

+0

什麼是你想才達到?如果你想把它作爲一個單例,在qmldir文件中聲明它。否則,創建一個實例。爲此,您不需要顯式導入它,因爲它位於qrc中的相同目錄中。 qml文件不是js庫。 – derM

+0

我如何在qmldir文件中聲明它爲單例? ,我試圖從main.qml發出一個信號,並在EventListner.qml中接收到它 –

回答

1

如果你想擁有的EventListener你將需要添加單個實例

pragma Singleton 

爲您EventListener.qml

pragma Singleton 

import QtQuick 2.7 
import QtQuick.Window 2.2 
Item { 
    property string color: "dark" 
    onColorChanged: console.log("event received!") 
} 

然後,你需要在目錄中名爲qmldir文件在您與內容有EventListener.qml第一行:

singleton EventListener 1.0 EventListener.qml 

最後,你可以用它在main.qml通過進口它:

import QtQuick 2.7 
import QtQuick.Window 2.2 
import QtQuick.Controls 2.1 
import '.' // To import Singletons you need to explicitly import the directory 
      // that holds the qmldir file 
Window { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 
    Button { 
     onClicked: EventListener.color = "blue"; 
    } 
} 

更多關於qmldir文件可以在文檔中找到:http://doc.qt.io/qt-5/qtqml-modules-qmldir.html

注:如果您使用的是qrc -resource系統,您需要確保該qmldir -file被添加到它。 (右鍵單擊qml.qrc,添加/添加現有(取決於它是否已經創建))。否則,你需要使用import語句:
import 'file:/path/to/the/directory(必要也許絕對路徑)

+0

我還有一個問題,如果我想使用多個文件作爲單身人士,我嘗試了它並沒有工作:/,所以我該怎麼做 ? –