Qt 5, C++和Qt Widget

作者:Zhen Zeng | Apr 23, 2012 7:15:45 AM

原文链接 Lars Knoll - Qt 5, C++ and Qt Widgets

我们发现大家非常关注我们在Qt5中对C++及QWidget所作出的承诺并且有很多疑问。我想现在正好可以在这里就就大家所关注的热点问题进行一下解答。

Qt 5 alpha文章重点讲了我们在Qt 5加入并启用的东西。

让我在这里明确的说明一下:

QWidget及其全部派生类是桌面Qt 5的核心部分

您仍然完全可以像在Qt 4.x时那样编写您的程序。

我们承诺我们会尽最大努力的保证与Qt 4.x的源码兼容性。这当然包括了QWidget和您用C++写的程序。这些东西都没消失。是的,我们的Qt 5中的Qt Widgets模块现在已经被标记为“完成”,这意味着此时此刻我们没有人在为这个模块的新特性工作了。但是如果有一天这领域有人感兴趣了或者需要进行更多开发了的时候,上述的情况就会发生改变。

Qt 5中我们增加了QML这种应用程序开发方式。我个人坚信,假以时日,越来越多的程序会是用这种新方式写成的,就像我相信对长远来说,QML是一个更好的方法。

像Windows 8 Metro UI这样的新用户界面并不能简单的加入到我们现有的QWidget基础架构中。使用QWidget在这些用户界面上添加各种动画的支持真的极其困难,这是由于QWidget是在好多年前为了大量的以静态为主要单元的用户界面而设计的。

流畅的动画用户界面现在已经存在于那些智能电话和平板设备上了,也开始渐渐出现在桌面环境了。而这些用QWidget基础架构也很难简单实现。

这意味着我们需要点新东西。QML/Qt Quick就是我们想到的解决问题的方法。这也是我们对这方面感兴趣的原因。

过去几年我们使用QML的经验告诉我们QML是创建UI的长期优秀技术。如果您想,您可以简单的把它用作.ui文件的强力替代。同时您仍然可以在需要时用JacaScript写一些程序逻辑。

这确实是由每个人对Qt 5所给出的选项做出选择,并以自己最喜欢的方式去使用它。

C++是且会一直是我们的主要编程语言

我们做了显著的工作,添加了很多新的C++ API。我们在许多地方添加了C++11的支持。而且我们还会持续的做这些事情,因为很长一段时间以来Qt写的大型程序大多数都是C++写成的。这没什么不好的。

我们对Qt 5所做的是混入了另外一种选择。我们想让JavaScript的使用得到像C++一样的支持。我们并不是让它变成更优越的或者唯一的支持方式。这是件好事,它为您编写应用程序提供了新的选择。

只要你想,就可以在QML内加入小段的程序逻辑。这种方式可以快速的做出原型,之后也可以在最终实现上替换为C++实现。在QML中插入小段程序逻辑赋予了程序脚本运行的能力。而且对于很多程序而言,它同样给出了用QML与JavaScript写出程序绝大部分的可能。

总结

使用Qt 5,如果您希望像以往那样使用Qt,请继续。这是一个得到完整支持的编程方式。

但是我相信我们在更长远的未来会需要更多的东西。对应用程序UI的想法会大幅改变,尤其是创建面向消费者的程序的时候。

我们希望Qt能保持稳定,那必须得有解决方法。而这就是Qt 5所全部考虑的。

Cheers,
Lars