Qt基础知识

Qt 是用于创建本机图形用户界面的多平台小部件工具包。Qt也是一个非常完整的开发框架,它提供了构建应用程序的实用工具,以及网络、蓝牙、图表、3D渲染、导航(如GPS)等扩展库。

基本Qt组件

如前所述,Spyder的插件开发包括扩展其基于Qt的图形界面的功能。

为了开发GUI,我们将添加称为窗口小部件的交互图形元素,并使用布局排列它们。然后,我们使用实现为函数或方法的自定义过程将这些小部件互连起来,从而允许从用户交互中触发行为。在接下来的内容中,我们将更详细地阐述这些想法。

每种类型的Qt组件都是一个以字母开头的类 Q 后跟与其功能相关的名称。

Qt的核心组件是 QApplication 班级。每个Qt应用程序都需要此类的单个实例作为基类,Qt 事件循环 是受控制的。Spyder本身就是 QApplication ,其起点是以下两行代码(Spyder/Spyder/app/mainwindow.py):

QMainWindow.__init__(self)
qapp = QApplication.instance()

QMainWindow 是一个预构建的小部件,它提供了许多标准的窗口功能,如工具栏、菜单、状态栏、可停靠的小部件等等,这是应用程序的基础。

信号和时隙

信号 是小部件在发生事情时发出的通知。有些事情可能是不同的,从按下按钮,到更改输入框中的文本,再到更改窗口中的文本。许多信号是由用户操作发起的,但这不是规则。

插槽 是信号接收器。通过将信号连接到函数或方法,可以将它们用作插槽。如果信号发送数据,则接收器Callable也将接收数据。许多Qt小部件也有自己的内置插槽,因此会自动通知相应的小部件。

小组件

在计算机科学中, 小组件 是“窗口小工具”的缩写。小部件是交互元素,如按钮或其他小部件的容器,如面板或选项卡。这个 QWidget 类是在Qt中创建接口的基础类,它从窗口系统接收事件,并在屏幕上呈现其表示。小部件可以提供对其他小部件进行分组的容器,如果它没有嵌入到父小部件中,它就会变成一个窗口。

布局

界面是通过在小部件中嵌入小部件来构建的,由于它们是可视组件,因此它们是通过以下方式进行可视组织的 布局 。布局指示小部件如何填充它们的容器,可以是矩阵中的列、行、单元格,也可以堆叠在一起,以便一次只有一个可见。以下是Qt中提供的4个基本布局: QHBoxLayoutQVBoxLayoutQGridLayout ,以及 QStackedLayout

操作、工具栏和菜单

桌面应用程序的用户界面通常使用 QToolbarQMenu 。由于这些都是访问相同功能的替代方式,因此Qt提供 QAction 作为避免功能重复的一种方式。因此,每次菜单选项或工具栏按钮提供对相同功能的访问时,它们都指向相同的操作。

对话框

A 对话框 是与用户通信的GUI组件。对话框通常用于不适合主界面的功能。在Qt中,按设计 QDialog 是一个模式(或阻塞)窗口,它显示在主窗口前面,直到它被取消。

Qt提供了一些 特殊对话框 对于最常见的用例,如 file Open/Save字体选择错误消息选色打印 ,等等。

窗口

如果应用程序需要不与主窗口挡路相关的其他窗口,则这些窗口将作为非父窗口生成 QWidget 实例。它们用于在长时间运行的过程中并行执行的任务,例如显示图形或编辑文档。

活动

一个 事件 表示用户与Qt应用程序的每个交互。有几种类型的事件旨在解决不同类型的交互。在Qt中,它们由 QEvent 实例,这些实例包含有关提示它们的信息,并被传递到负责触发进一步操作的特定处理程序。