Qml导入本地文件作为限定符不起作用

时间:2017-08-09 09:17:01

标签: javascript qt import directory qml

下面的代码是我的问题和插图,我导入和限定为EventListner的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

1 个答案:

答案 0 :(得分: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.qmlimport 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

有关qrc文件的更多信息,请参阅文档:http://doc.qt.io/qt-5/qtqml-modules-qmldir.html

  

注意:如果您使用的是qmldir - 资源系统,则需要确保已将import 'file:/path/to/the/directory - 文件添加到其中。 (右键单击qml.qrc,添加/添加现有(取决于它是否已创建))。否则你需要使用import语句:
  SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); try { Date parsedDate1 = formatter.parse("14-08-2017"); System.out.println(parsedDate1); SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd"); Date parsedDate2 = formatter2.parse("2017-08-1 00:00:00.0 +0:00"); Assert.assertEquals(parsedDate1, parsedDate2); } catch (ParseException e1) { } (可能是必要的绝对路径)