gpt4 book ai didi

Qt Quick 与 Qt 小部件

转载 作者:行者123 更新时间:2023-12-03 05:29:26 25 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

1年前关闭。




Improve this question




我是 Qt 新手,不太了解 Qt Quick Project 和 Qt Widget Project 之间的区别。

我希望创建一个程序来绘制用户可以旋转和剪切的六边形格子,以及平移和放大和缩小。它最终将成为一个 MIDI Controller 。哪种类型的项目更适合这个,为什么?

我希望这适用于桌面和移动平台。

最佳答案

备注 :在这个答案中,“Qt Widgets”是指一个 Qt Widgets 应用程序,在创建新的 Qt 应用程序时可以选择。

这是问题首次发布七年后......但这是我的“目标”两美分,以抵消此后的任何发展。

复习

语言

Qt Quick 项目使用 QML 和 JavaScript .

Qt Widgets 项目使用 C++ 代码。 (PyQt 和 PySide,Qt 的 Python 绑定(bind),使用 Python。)

性能和编码

因此,与 Qt Quick 相比,Qt Widgets 可以被认为是低级的。但这意味着从长远来看,Qt Widgets 项目会运行得更快,性能更好。不过,低级可能是件好事,因为 Qt Widgets 更多地暴露于原生 API(QtCore moduleQt Style Sheets 等)。也就是说,它通常用于桌面开发。

Qt Quick 更适合移动开发(尽管它仍可用于桌面开发)。它有即用型popups , animations ,选项卡和布局,flickables , drawers ,以及通常的控件;在移动开发中无处不在。

用户界面设计

两者都有 ui与 QtDesigner 一起工作的文件,为设置布局和创建界面提供高级 View 。 (在 Qt Quick 中,扩展名是 .ui.qml 。在 Qt 小部件中,它们是 .ui 。) .ui文件不是强制性的,也不是必需的:您可以选择使用 QML/JS 或 C++/Python 以编程方式进行设计和布局。

学习

如果您对编程完全陌生,我建议您先看看 Qt Quick。就个人而言,我认为 Qt Quick 的学习曲线更平缓,并且更容易完成无数项目。它被称为“Qt Quick”是有原因的。 (不过不要小看 Qt Widgets,它们有一些比 QtQuick 更好的模块。)

但是,如果您以前使用过 C++ 或 Python 进行编程,我建议您先看看 Qt Widgets,以习惯它们的signals and slot mechanism。和您可能感兴趣的模块(例如 sql network gui )以及编程设计(例如 model/view programming 用于显示数据)。

尤其是对于 C++,大多数进行事件处理的非 Qt 库使用 while -loops,这不是 Qt 的情况。他们使用 signals and slots .

最后,即使您主要使用 Qt Widgets,您也可能希望查看 Qt Quick,因为它提供了一种高级声明性语言可供使用并允许您更快地进行设置。 (特别是对于移动开发。)

Qt 为 Qt Quick 提供了丰富的示例。和 Qt Widget项目,以及 forum .从长远来看,您不必担心获得帮助。 (不要忘记 StackOverflow!)

Qt Quick + Qt 小部件

到目前为止,我们一直将它们视为独立的实体。但是可以integrate QML into C++ .这使您可以利用 Qt Widget、C++ 和其他模块。例如,QtQuick 提供了 TreeView但不是 TreeModel ,可以/应该从 C++ 注册到 QML。经常有separation of concerns pitch,其中 Qt 建议将程序分成 UI,将逻辑分别分成 QML 和 C++。

这也很方便,如果说您需要一个用于密集 SQL 查询、算法或异步 http/xml 请求的后端。那不是很酷吗? QML/JS 前端加上一个 C++ 后端。全栈 Qt'er。 :-)

(我还没有尝试过,有一个 Python 后端。我还没有接触过 PyQt ......)

关于Qt Quick 与 Qt 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com