1

阅读了SCXML 调用示例后,我问自己如果要调用使用qscxmlc. 我注意到可以通过使用标签src中的属性来调用另一个状态机。invoke我通过设置srcSCXML 文件的文件系统路径来完成这项工作。但是,我无法弄清楚如何在 Qt 资源中引用 SCXML 文件(使用qrc:///...不起作用)或如何调用已编译的状态机。

更新

我在 Qt 的文档中找不到任何内容,所以我查看了源代码(5.8 版):

加载qscxmlcompiler.cppQScxmlCompilerPrivate::DefaultLoader::load(..)(第 2447 行)中实现:

    const QUrl url(name);
    if (!url.isLocalFile() && !url.isRelative())
        errs << QStringLiteral("src attribute is not a local file (%1)").arg(name);
    QFileInfo fInfo = url.isLocalFile() ? url.toLocalFile() : name;
#endif // BUILD_QSCXMLC
    if (fInfo.isRelative())
        fInfo = QFileInfo(QDir(baseDir).filePath(fInfo.filePath()));
    // ...

我注意到它使用 QUrl,因此应该能够使用我尝试使用的资源:/mystatemachinefile.scxml而不是rsc://mystatemachinefile.scxm它并且它有效:) 但是这应该添加到文档恕我直言。

我仍然想知道如果您想在使用状态图之前对其进行编译,应该如何实现它们,但我想这目前是不可能的?

4

0 回答 0