singleton qml
假如工程为LoginWindow
-LoginWindow
--imports
---Login
----Config.qml
----qmldir
1、在QML开头写
Config.qml --路径:LoginWindow/imports/Login/Config.qml
pragma Singleton
import QtQuick 2.0
QtObject {
property url iconPhone: "qrc:/image/res/phone_btn.png"
property url iconWechat: "qrc:/image/res/wchat_btn.png"
property url iconQQ: "qrc:/image/res/qq_btn.png"
property url iconWeibo: "qrc:/image/res/wb_btn.png"
// Component.onCompleted: {
// console.log("In Config qml :", iconPhone)
// }
}
2、qmldir 文件中书写 --路径:LoginWindow/imports/Login/qmldir
singleton Config 1.0 Config.qml
3、pro文件中
QML_IMPORT_PATH = $$PWD/imports
//加入这个是为了让QtCreator 能够识别自定义的模块(不加可以,但是import的时候有红线)
注: imports路径
LoginWindow/imports
4、main.cpp中 addImportPath
QQuickView view;
view.engine()->addImportPath(":/imports");//是把imports中的所有添加到资源中
5、使用
import Login 1.0
Image{
source: Config.iconPhone
}
易错:
qmlRegisterSingletonType(QUrl("file:///E:/test/qmltset/qiqi/LoginWindow/Config.qml"), "Login.Config", 1, 0, "LoginConfig");
/*
If you add the call to
qmlRegisterSingletonType()
Does not apply to you, maybe this is a Qt Quick UI project (ie without C++), then you can change the name
*/
//如果使用这种方式添加单例,在以QtCreator 建立的QQuick 工程中是不好用的