3.8 认识Qt界面Widgets

应该是通过代码来编写界面还是使用拖曳控件来绘制界面呢?这是仁者见仁、智者见智的问题,甚至可能引起代码派和拖曳派的争论。如果是简单的演示程序或者简单的小工具,可以使用拖曳控件的方式来绘制界面;或者是刚入门的初学者,对Qt界面不是很熟悉,但是公司又需要马上把程序编写出来,这时采用拖曳控件的方式可以快速解决问题。随着项目越来越大,界面越来越复杂,会发现维护拖曳界面(.ui文件)是一件不简单的事情,甚至是牵一发而动全身;如果是用代码编写的界面,可以很好地将界面封装成小的组件和控件,达到复用的目的,这样的程序结构清晰且能在后期很好地修改和维护,最为重要的是使用代码便于编写自定义的控件。纵观Java安卓、前端JS框架等,使用代码编写界面的居多。当读者对界面有一定的熟悉程度之后,建议还是使用代码编写界面。这样可以更好地了解Qt的机制、设计哲学,以及在Qt中使用C++,还能够锻炼自己的C++编程能力,因为Qt本身就是一个庞大的C++项目,其中的实现和设计哲学对我们加深C++编程能力非常有帮助。如果更有追求一点,可以适当地阅读Qt的源码。

Qt功能强大,类库众多。作为初学者,从界面入手是一个不错的选择。因此我们先从它的传统桌面程序的UI模块Qt Widgets入手。

Qt Widgets提供了一组UI元素(图形界面元素)来创建经典的桌面风格的用户界面。这些UI元素在Qt中被称为控件,它们的基类是QWidgets。常见的控件有主窗口、对话框、各种控件等。

Qt控件是传统的用户界面元素,通常在桌面环境中使用。这些控件很好地集成到底层平台上,在Windows、Linux和MacOS上为本机系统提供各种外观元素。这些控件是成熟的、功能丰富的用户界面元素,适用于大多数静态用户界面。与Qt Quick(Qt的另外一种界面技术)相比,这些控件在触摸屏和流畅、高度动画化的现代用户界面上的缩放效果并不理想。不过,对于具有传统的以桌面为中心的用户界面应用程序(比如Office类型的应用程序),控件则是一个很好的选择。