与QT的现代看的UI

Cra*_*aig 7 qt

我有一个用C++/MFC编写的向导应用程序,我想改进UI.不同的按钮,更改对话框背景颜色等.我可以使用QT来改善外观,还是应该更改为WPF和C#?

Rei*_*ica 14

Qt 5基本上为您提供了五个(5!)UI工具包:

  1. 模块类似于你在80年代末/ 90年代初有一个很好的2D图形库得到了什么.您可以访问窗口的缓冲区和键/鼠标事件.其他一切都取决于你.这将是从"当时"移植现有应用程序的最快方法.图形基元很整洁,有字体,画家路径,渐变等,但是没有小部件的概念,只有顶级窗口的概念.您可以在该窗口中绘制所需的所有内容.

    与winapi或xlib等典型平台工具包相比,所提供的概念处于更高的抽象层次.就图形原语而言,它更像是开罗或PDF的精神.

    可以以与QRasterWindow完成相同的方式并行化a的绘画QWidget.

  2. 小工具模块,让你的Qt4风格的部件和布局,以定制,能够风格.这个模型可能最像MFC,虽然它有更多的功能.小部件是所谓的外部小部件 - 这意味着它们没有本机窗口句柄.这样可以保持快速.您有许多预先编写的小部件来执行各种用户输入/输出.可以并行化窗口小部件的绘制..

  3. 声明模块,又名Qt的快速1,采用QGraphicsView小窗口从窗口小部件模块来显示图形场景.使用QML描述该场景.控件相当简陋,没有特定于平台的样式.无论你在哪里运行它都会看起来都一样.对界面中的动画/流动性有很好的支持.

  4. 快速模块,又名Qt Quick的2,使用一种新的基于ES-OpenGL的场景图,可以在或者从窗口小部件模块的窗口小部件,或者从GUI模块原始窗口之上运行.使用QML描述场景.有一个桌面组件集可以为您提供平台样式的控件,如组合框,文本输入,表格等.新的场景图可以真正利用硬件,并且当您拥有大量的动画UI时,它将胜过小部件和Qt Quick 1.这是未来的发展方向.Qt 5.2引入了一个全新的Javascript引擎和一个新的场景图渲染器,具有更好的性能.Qt 5.11再次引入了一个新的Javascript引擎,速度提高了一倍.

  5. 通过C++和QML API公开的3D模块是一个高级3D对象和场景渲染系统,专为交互式应用程序量身定制.它使用户与3D对象的交互变得容易.C++和QML API是对等的,可以根据您的喜好使用 - 这与Qt Quick形成对比,Qt Quick只有QML API提供完整的功能.

Qt Quick 1和Qt Quick 2都可以以非常适中的性能成本包装现有的小部件,但是你确实会失去"本机"QML对象的一些细节.

请注意,OpenGL实现的需求与系统上提供的OpenGL实现之间存在分离.在Windows-XP之后的系统(Vista,7,8等)中,您通常应该使用Qt 5,它具有在DirectX之上运行的OpenGL ES 2的ANGLE实现.仅在Windows XP上,您才被迫使用系统OpenGL驱动程序.

Qt是一个非常好的框架,即使对于非gui应用程序也可以使用.它具有良好的跨平台网络和文件I/O抽象,时间/日期,并提供了许多其他通用的好东西.例如,与ncurses一起使用它相对容易.

移植现有MFC代码的最快方法是使用C++并将Qt与qtwinmigrate解决方案一起使用.后者是一个BSD许可的垫片层,可以让您快速启动和运行.