百姓大小事,一呼百应!

百姓网 | 百姓知道

硬件

VS 2015 的跨平台特性对 Qt 会带来多大的冲击呢?

vs2015支持c++开发跨平台的库,这样对于Qt而言会有多大的冲击呢?将来用VS开发c++跨平台和QT开发跨平台应用发展趋势各是怎样的?如果现在新项目要开发跨平台的高性能应用,如果用c++是选择QT还是VS2015的跨平台特性呢?另外VS2015跨平台对于界面的支持如何? ============= 注意:不是在讨论IDE,也不是在讨论.net的跨平台!而是VS支持c++跨平台的特性。既然要跨平台,对于与系统无关的库显然是用标准c++。而涉及到与系统相关的AP…

2 个回答

  • 韦易笑 | 2017-08-11 13:41:54

    1. Qt SDK现在最新版本为5.4,按照官方说法,其LGPL协议下,提供以下目标平台的二进制开发包:

    • Windows Desktop x86/64
    • Windows Store App
    • Windows Phone 8.1
    • Android arm5/7
    • Android x86
    • MacOS
    • iOS

    如果在GPL协议下或者之前老版本的Qt,可以支持塞班、黑莓、各种嵌入式开发板等平台。Qt支持的目标平台肯定还是比VS2015多的。


    2. Qt不仅仅是一个c++界面库,它在实现了一套基于C++的反射功能的基础上,包含了网络、数据库、多媒体、测试框架、国际化工具、部署模块等,甚至还自己封装了一个WebKit模块。此外,Qt有收费才能使用的模块:

    • Qt Purchasing
    • Qt Charts
    • Qt Virtual Keyboard
    • Qt Data Visualization

    现在,除了这些传统客户端开发工具以外,Qt也推出了云服务QtCloudServices。这方面我去年写过一篇博客《Qt云服务/云计算平台QTC(Qt Cloud Services)入门(0)—— Introduction》,当然现在可能有变化。


    3. 由于平台众多,Qt传统的基于QWidget界面在适配各种不同DPI的屏幕时,设计风格、控件及字体、图标大小等方面是会存在问题的,Qt5.4版本开始,官方宣称解决了DPI的问题:

    High-DPI support for Windows and OS X

    当然Qt5.4版本以前(包括现在),Qt官方希望大家使用QtQuick(QML,一种基于JavaScript的语言。c++与QML的关系,有点像C#与WPF一样)来解决触屏和DPI的问题,使用QML开发的话,在各个目标平台显示效果都是一样的,并且能够很方便的与C++代码交互。当然,与.Net的WPF比起来,还差很远,但毕竟跨的平台比WPF多。Qt官方有一个用来显示股市信息的QML Demo(http://doc.qt.io/qt-5/qtquick-demos-stocqt-example.html),在Win8、Android、WP上面显示效果都非常好。


    4. QtCreator这个IDE与Qt配合起来非常完美,在VS里面使用Qt总感觉怪怪的。如果不使用Qt,由于C++语法过于复杂,VS这种宇宙级的IDE也不能像c#那样来IntelliSenseC++,但无论如何还是要强于Qt Creator的


    5. VS2015中C++的跨平台,肯定不会是一次编写处处运行(除非写的是标准C++)。如果带有界面(Win的MFC、WTL,Linux的X11)、或者有用到POSIX、WIN API,怎么可能不修改代码直接跨平台?而Qt有自己的一套GUI、Networks等框架,如果严格使用Qt SDK的标准来开发,完全可以不修改代码,在各个平台编译就行。

    本问答由韦易笑提供

  • 韦易笑 | 2017-08-11 12:53:45

    谢谢邀请我的两个同学。其实我觉得这两个没有必要放在一起,我觉得这本就不是一个概念的东西,Qt说到底就是一个跨平台应用和UI开发的框架,而Visual Studio 2015是一个IDE。而C++跨平台,只要你不用平台特有的一些东西,如Windows API,那么也是很容易理解的,毕竟我以前就见过在Visual Studio写C++代码,然后放在Linux下跑的。

    而这里的Visual Studio跨平台特性,如Android,Visual Studio也是利用了Android的Native Activity等。而值得关注的是Visual Studio 2015说可以生成Linux应用程序,我顿时脑洞大开,腹黑的瞎想,难道是调用Clang去生成?毕竟Clang本身的BSD License太友好。

    本问答由韦易笑提供

* 本站部分内容来源自网络,仅作分享之用,侵删。