【问题标题】:how to put multiple singletons in one qmldir file?如何将多个单例放在一个 qmldir 文件中?
【发布时间】:2017-08-13 19:21:41
【问题描述】:

我想在一个 qmldir 文件中使用多个单例,但它似乎不起作用,我没有错误但程序没有启动。

qmldir:

singleton File1 1.0 File.qml
singleton File2 1.0 File2.qml

主要:

import QtQuick 2.7
import QtQuick.Controls 2.1
import '.'
Window{
    visible:true
    width:640
    height:480
    title: qstr("hello world!")

    Button{

        onCliked: File2.test();
    }
}

文件2.qml:

pragma Singleton
import QtQuick 2.7
import QtQuick.Controls 2.1
Item{
    signal test;
    onTest:console.log("File2 received signal");
}

文件1.qml:

pragma Singleton
import QtQuick 2.7
import QtQuick.Controls 2.1
Item{
    signal test;
    onTest:console.log("File1 received signal");
}

如果我删除 qmldir 中的第二行,代码就可以工作,但是 File2 将是未定义的

【问题讨论】:

  • Multiple Singletons 有点矛盾,不是吗?
  • 确实如此,但是当我寻找一种方法来对链接 qml 文件进行排序以便能够如上例所示相互发送和接收信号时,单例似乎是唯一的解决方案,在不知道单例意味着什么的情况下,我想如果我可以将其应用于多个文件以链接它们会很棒,如果我不能这样做,那么请告诉我我该怎么办?
  • 多个不同的单例并不矛盾。
  • 所以@AlexanderVX 我该怎么办?
  • 如何判断它为什么不启动?调试日志?

标签: javascript c++ qt singleton qml


【解决方案1】:

如果您的qmldir 文件与您所写的完全相同:

Singleton File1 1.0 File.qml
Singleton File2 1.0 File2.qml

错误可能存在于此,因为关键字是singleton,而不是Singleton

试试看:

singleton File1 1.0 File.qml
singleton File2 1.0 File2.qml

但该错误不应该默默地失败。应该有一些错误:

[main.qml] 组件声明需要两个或三个参数,但提供了 4 个
[qmldir] 组件声明需要两个或三个参数,但提供了 4 个

//main.qml

import QtQuick 2.7
import QtQuick.Controls 2.0
import '.'

ApplicationWindow {
    id: window    
    width: 800
    height: 600
    visible: true    
    Row {
        spacing: 3
        Button {
            text: 'single1'
            onClicked: Single.sig()
        }

        Button {
            text: 'signle2'
            onClicked: Single2.sig()
        }
    }    
}

//singleton.qml

pragma Singleton
import QtQuick 2.0
QtObject {
    signal sig
    onSig: console.log('Singleton1 Received')
}

//singleton2.qml

pragma Singleton
import QtQuick 2.0
QtObject {
    signal sig
    onSig: console.log('Singelton2 Received')
}

//qmldir

singleton Single 1.0 singleton.qml
singleton Single2 1.0 singleton2.qml

像魅力一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多