将QML链接到C ++-还是应该?

罗伯特

我正在用Qt创建我的第一个程序(这是SO成员在前面的问题中建议的)。Qt社区在其文档中鼓励使用QML作为标记语言和JavaScript来处理逻辑。听起来很有希望,但是文档缺乏很好的初学者对这两者如何以及何时与C ++结合的解释。

Qt 5文档

尽管可以使用C ++来访问和操作对象树中的QML对象,但建议您不要在应用程序测试和原型设计之外采用这种方法。

假设我们有一个QtQuick2ApplicationViewer对象作为我们的主视图,对象是由默认的Qt Creator模板生成的。首先,我想显示一个我创建的欢迎屏幕welcome.qml当用户单击按钮时,主程序即运行app.qml从我收集到的信息main来看,我的函数应该如下所示:

QGuiApplication app(argc, argv);

QtQuick2ApplicationViewer view; // Class generated by the default template.
view.setSource(QUrl("welcome.qml")); // Load QML.
view.showExpanded();

return app.exec();

奇迹般有效。根据文档,我现在应该有一个welcome.js用于处理关闭欢迎屏幕文件。现在我很困惑,但- JavaScript的是如何将传达回viewapp.qml是要加载?更重要的是:应该吗?

程序员

嗨罗伯特,

如果我是正确的话,您想知道如何从一个屏幕导航到另一个屏幕。示例:从welcome.qmlapp.qml

现在来问您的问题... JavaScript将如何传达回要加载app.qml的视图?更重要的是:应该吗?

从QML方面,您可以与C ++本机方面进行通信,并让' view '加载app.qml完全有可能。

更重要的是:应该吗?: 没必要。您可以在不交流' view '的情况下加载不同的qml文件,您需要稍微调整一下代码。而不是这样做

 view.setSource(QUrl("welcome.qml"));

您必须这样做。

view.setSource(QUrl("main.qml"));

这里的main.qml是一个qml文件,负责加载不同的qml文件。首先,它将加载“ welcome.qml ”。您需要在main.qml中使用QML Loader来加载不同的qml文件。

这个想法是让* welcome.qml *发出一个信号,在接收到哪个main.qml将加载app.qml时说showAppPage()以下是一个简单的示例,它执行相同的操作。

//Main.qml
import QtQuick 2.1
Item {
    width: 360
    height: 360
    Loader{
        id:pageLoader
        source: "welcome.qml"
    }
    Connections{
        target: pageLoader.item
        onShowAppPage:{
            pageLoader.source = "app.qml"
        }
    }
}

欢迎页面

//welcome.qml
import QtQuick 2.1

Rectangle {
    width: 360
    height: 360
    color:"blue"
    signal showAppPage;
    MouseArea{
        anchors.fill: parent
        onClicked: showAppPage()
    }
}

应用页面

//app.qml
import QtQuick 2.1

Rectangle {
    width: 360
    height: 360
    color:"red"
}

您也可以从main.qml加载welcome.qml和app.qml,而无需使用Loader和Qt.createComponent方法。但是QML Loader可以满足您的目的。我希望这回答了你的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我应该链接到同名的 Debug 还是 Release dll?

来自分类Dev

CSS链接定位,我应该使用还是:link

来自分类Dev

我应该使“ emacs”成为符号链接还是环境变量?

来自分类Dev

使用boost库时,应该链接到mt还是普通版本的库?

来自分类Dev

使用boost库时,我应该链接到mt还是普通版本的库?

来自分类Dev

我应该将shell函数定义为x()还是x()?

来自分类Dev

我应该将QR Code存储为“文本”还是“图像”?

来自分类Dev

我应该将Ubuntu安装为UEFI还是Legacy?

来自分类Dev

应该将Marshal.FreeHGlobal称为LocalFree还是LocalFree?

来自分类Dev

我应该将BIOS设置为本地时间还是UTC?

来自分类Dev

我应该将枚举放在 int main() 外面还是里面?

来自分类Dev

我应该将Ubuntu安装为UEFI还是Legacy?

来自分类Dev

我应该学习iOS的Swift还是Objective C

来自分类Dev

我应该使用numeric_limits还是C极限宏?

来自分类Dev

Phone应该是C#中的类还是结构?

来自分类Dev

我应该使用Python还是C作为语言解释器?

来自分类Dev

在C语言中,函数exit()还是应该允许main()处理?

来自分类Dev

Phone应该是C#中的类还是结构?

来自分类Dev

我应该使用位集还是向量?C ++

来自分类Dev

C# SoundPlayer - 应该是静态的还是基于实例的?

来自分类Dev

我应该将硬盘盒连接到eSATAp还是ExpressCard USB3?

来自分类Dev

我应该使用 QVariant 还是 MyCustomType* 将对象从 Qml 传递到 C++?

来自分类Dev

我应该将图像保存在Core Data中还是应该使用SDWebImage

来自分类Dev

应该将日志记录类作为依赖项插入,还是应该使用静态方法

来自分类Dev

我应该将Type存储在数据库中还是应该将其存储在枚举中?

来自分类Dev

表是将维度链接到事实表,还是事实的维度?

来自分类Dev

我应该将列表存储在内存中还是数据库中,并且应该构建一个类以连接到DB?

来自分类Dev

我应该将s3存储桶用于文件还是应该坚持使用ec2实例

来自分类Dev

应该将内存防护栏合并为互斥体获取交换循环(或队列获取加载循环)还是应该避免?

Related 相关文章

  1. 1

    我应该链接到同名的 Debug 还是 Release dll?

  2. 2

    CSS链接定位,我应该使用还是:link

  3. 3

    我应该使“ emacs”成为符号链接还是环境变量?

  4. 4

    使用boost库时,应该链接到mt还是普通版本的库?

  5. 5

    使用boost库时,我应该链接到mt还是普通版本的库?

  6. 6

    我应该将shell函数定义为x()还是x()?

  7. 7

    我应该将QR Code存储为“文本”还是“图像”?

  8. 8

    我应该将Ubuntu安装为UEFI还是Legacy?

  9. 9

    应该将Marshal.FreeHGlobal称为LocalFree还是LocalFree?

  10. 10

    我应该将BIOS设置为本地时间还是UTC?

  11. 11

    我应该将枚举放在 int main() 外面还是里面?

  12. 12

    我应该将Ubuntu安装为UEFI还是Legacy?

  13. 13

    我应该学习iOS的Swift还是Objective C

  14. 14

    我应该使用numeric_limits还是C极限宏?

  15. 15

    Phone应该是C#中的类还是结构?

  16. 16

    我应该使用Python还是C作为语言解释器?

  17. 17

    在C语言中,函数exit()还是应该允许main()处理?

  18. 18

    Phone应该是C#中的类还是结构?

  19. 19

    我应该使用位集还是向量?C ++

  20. 20

    C# SoundPlayer - 应该是静态的还是基于实例的?

  21. 21

    我应该将硬盘盒连接到eSATAp还是ExpressCard USB3?

  22. 22

    我应该使用 QVariant 还是 MyCustomType* 将对象从 Qml 传递到 C++?

  23. 23

    我应该将图像保存在Core Data中还是应该使用SDWebImage

  24. 24

    应该将日志记录类作为依赖项插入,还是应该使用静态方法

  25. 25

    我应该将Type存储在数据库中还是应该将其存储在枚举中?

  26. 26

    表是将维度链接到事实表,还是事实的维度?

  27. 27

    我应该将列表存储在内存中还是数据库中,并且应该构建一个类以连接到DB?

  28. 28

    我应该将s3存储桶用于文件还是应该坚持使用ec2实例

  29. 29

    应该将内存防护栏合并为互斥体获取交换循环(或队列获取加载循环)还是应该避免?

热门标签

归档