我是Qt的新手,并不太了解Qt Quick Project和Qt Widget Project之间的区别.
我希望创建一个程序,绘制一个六边形的格子,用户可以旋转和剪切,以及平移和放大和缩小.它最终将成为MIDI控制器.哪种类型的项目会更好,为什么?
我希望这可以在桌面和移动平台上工作.
And*_*ewS 35
注意: Qt Widgets已被QML Widgets取代; 这个答案回答了所提出的问题,现在这个问题严格来说是一个关于旧Qt Widgets的历史问题.
Qt Quick是一种声明式智能手机风格的用户界面,支持智能手机应用程序中常见的许多炫酷动画过渡.Quick也是快速开发原型的不错选择.Qt Widget是传统的面向桌面的UI模型.
目前(Qt5之前),桌面系统功能的Qt Quick支持缺乏(但正在改进).Quick中没有对菜单,工具栏,对话框和其他标准桌面行为的支持,而Widget非常支持这些元素.
您希望您的应用在桌面和平板电脑平台上看起来和感觉原生,或者您是否围绕自己的自定义UI小部件构建了一个简单的应用程序?正如Mat所说,如果Qt Quick支持您想要的功能,那么这可能是您最快的方法.如果你想构建全功能的桌面版本,Qt Widget可能是你最好的选择.
Tei*_*mpz 32
作为专业开发qt应用程序的人,我会在任何一天选择qml而不是小部件.
小部件对于非常基本的东西是好的,但是我曾经需要创建一些更加花哨的东西,小部件很快就会出现问题.
Qml更灵活,您可以将项目锚定在任何地方,而不是使用有限的小部件布局系统.当小部件充满了这些缺陷时,几乎没有平台依赖性缺陷.财产装订系统使得你的ui与你的模型保持同步非常容易.
Tre*_*edJ 18
注意:在本回答中,"Qt Widgets"是指Qt Widgets应用程序,可在创建新Qt应用程序时选择.
这是问题首次发布后的七年......但这是我的目标两美分,以中和从那时起的任何发展.
Qt Quick项目使用QML和JavaScript.
Qt Widgets项目使用C++代码(或PyQt/PySide中也有Python).
因此,与Qt Quick相比,Qt Widgets可被视为低级别.但这意味着从长远来看,Qt Widgets项目运行速度更快,性能更好.低级别可能是好的,因为Qt Widgets更多地暴露于本机API(QtCore模块,QtStyleSheets等).也就是说,大多数人更喜欢用于桌面开发的Qt Widgets.
除此之外,C++/Python比JS更严格.这可能是一件好事,因为你有更多的自由.(但QtCreator 会发出警告,所以这不应该是一个缺点.只记得写清洁代码,而不是意大利面.)
Qt Quick,更适合移动开发(它仍可用于桌面开发).它有现成的弹出式窗口(可拖动的侧面板),动画,标签视图,可滑动的按钮,滑动器和进度条; 一切都是为了加快移动开发.
两者都有ui与QtDesigner一起使用的文件,提供了用于设置布局,创建界面等的高级接口.(在Qt Quick中,这是.ui.qml.在Qt Widgets中,这是.ui.)您也可以使用QML/JS以编程方式执行此操作. C++,所以这.ui不一定是强制性的.
如果你对编程完全不熟悉,我建议先看看Qt Quick.就个人而言,我认为Qt Quick有一个更温和的学习曲线,更容易合作完成无数的项目.恕我直言,它被称为"Qt Quick ",这是因为完成任务或设计所需的代码通常较少,因此您可以快速制定您正在计划的任何魔法.(不要小看QtWidgets,他们有一些超越QtQuick的好模块.)
但是,如果你已经用C++或Python之前编程,我建议考虑看看Qt控件首先,要习惯他们的sql机制和他们有任何模块(例如network,gui,while)一起编程设计(如模型/视图编程用于显示表格或数据).
特别是对于C++,大多数使用TreeView-loops 进行事件处理的非Qt库,Qt 不是这种情况.他们使用信号和插槽.
最后,即使您主要使用Qt Widgets,您也可以查看Qt Quick,因为它提供了一种高级语言,可以让您更快地进行设置.(特别是对于移动开发.)
Qt为Qt Quick和Qt Widget项目提供了丰富的示例,以及一个活跃的论坛.因此,从长远来看,您不必担心获得帮助.(别忘了StackOverflow!)
请注意,还可以将QML与C++集成.这允许您利用Qt Widget和C++功能.(例如QtQuick提供TreeModel但不是a ui,模型需要从C++注册到QML中.)
如果您需要强烈的SQL查询或http/xml请求的后端,这也会派上用场.那不是很酷吗?QML/JS前端加上C++后端.Fullstack Qt'er.:-)
(我没有尝试过,有一个Python后端.我还没有触及PyQt ......)
Qt Quick 默认为 QML,启用内联 ECMAscript 的 JSON 声明方言。使用 Qt 小部件,设计人员可以制作样式表,而开发人员则可以进行本地 C++ 编码。
QML 在运行时处理。在框架内,一切都可以一起运行,差异只是为软件架构师的决策增加了灵活性。
| 归档时间: |
|
| 查看次数: |
40968 次 |
| 最近记录: |