Qt状态图:如何调用已编译的状态机?

时间:2017-01-25 10:12:10

标签: qt statechart scxml

阅读SCXML invoke example我问自己,如果要调用使用qscxmlc编译为C ++代码的状态机,这应该如何工作。我注意到可以使用src标记中的invoke属性来调用另一个状态机。我通过将src设置为SCXML文件的文件系统路径来实现此功能。但是,我无法弄清楚如何在Qt资源中引用SCXML文件(使用qrc:///...不起作用)或如何调用已编译的状态机。

更新

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

正在qscxmlcompiler.cpp QScxmlCompilerPrivate::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的资源而且它有效:)但是这应​​该添加到文档恕我直言。

我仍然想知道如果你想在使用它们之前编译它们你应该如何实现状态图表,但我想这是不可能的呢?

0 个答案:

没有答案