Qt for Python—Qt Designer 概览
off999 2024-10-18 08:09 89 浏览 0 评论
前言
本系列第三篇文章(Qt for Python学习笔记—应用程序初探 )、第四篇文章(Qt for Python学习笔记—应用程序再探 )中均是使用纯代码方式来开发 PySide6 GUI 应用程序的。
本文是本系列第五篇文章,图文方式介绍可视化界面设计工具——Qt Designer。
1. 简介
Qt 提供了一款名叫 Qt Designer 的工具,该工具提供了 Qt 基本的可绘制窗口部件(如 QLabel 、 QPushButton 等)或布局(如:QVBoxLayout 、 QGridLayout 等),通过鼠标直接拖曳这些窗口部件,放置在窗体的相关位置,按所见即所得的方式,来进行窗体设计,并可以设计的窗体效果进行快速预览。
借助 Qt Designer 工具,能够高效、快速地以可视化方式完成窗体 UI 的设计,界面直观形象,所见所得。
文中会涉及到如下术语,简介如下:
- Widget:部件(也称组件、控件),用于 GUI 的图形界面元素,如按钮、标签等。
- Form:窗体,本文用于指 GUI 窗口的统称。
2 启动 Qt Designer
在本系列第二篇文章(Qt for Python学习笔记—搭建开发环境 )中有介绍到在安装完成 PySide6 模块后,会在安装路径(如: C:\Develop\Python\Lib\site-packages )下新增 PySide6 模块,其中就有一组可执行文件(如:designer.exe 、uic.exe 、 rcc.exe 等),其中 designer.exe 就是 Qt Designer 工具的可执行文件。通常为了便于后续启动 Qt Designer,我们会将 designer.exe 创建为桌面快捷方式(可通过鼠标右键,点【发送到】–>【桌面快捷方式】完成)。
单击桌面上的 Qt Designer 快捷方式,然后启动 Qt Designer。在 Qt Designer 窗口出现后,通常会自动弹出一个【新建窗体】的对话框窗口,在该窗口中选择一个窗体模板(如:Main Window),然后点击【创建】按钮,即可进入 Qt Designer 设计窗口。
3. Qt Designer 简介
3.0 窗口界面概览
下图为 Qt Designer 6.0.0 的一个典型设计窗口界面:
整个设计窗口除了窗体标题栏和边框外,可以划分为8个区域:
- 第1个区域:顶部的菜单栏
- 第2个区域:顶部菜单栏下方的工具栏(也称菜单快捷选项)
- 第3个区域:底部的状态栏
- 第4个区域:左侧的窗口部件盒
- 第5个区域:中间的窗体编辑器
- 第6个区域:右侧上方的对象检查器
- 第7个区域:右侧中部的属性编辑器
- 第8个区域:右侧下方的区域,该区域实际上包含3个Tab区域(信号/槽 编辑器、资源浏览器、动作编辑器)
3.1 菜单栏(Menu Bar)
菜单栏提供了 Qt Designer 设计窗口的大多数功能入口,共包括7组主菜单(如下图示)。
3.1.1【文件】主菜单项
该主菜单项下的子菜单项如下图示:
其中常用子菜单项介绍如下:
- 点击【新建…】子菜单项(或按快捷键 Ctrl + N)后,弹出【新建窗体】对话框。
- 点击【打开】子菜单项(或按快捷键 Ctrl + O)后,弹出【打开窗体】对话框,从相关路径中选择要打开的窗体文件(后缀名为 .ui)
- 点击【保存】子菜单项(或按快捷键 Ctrl + S)后,弹出【窗体另存为】对话框,选择保存路径,将当前窗体保存为指定文件名的窗体文件(后缀名为 .ui)
注1:通常情况,保存的窗体文件名与窗体的 objectName 保持一致(这样通过文件名就可以直接知道窗体的名称)。
注2:窗体文件(.ui)实际上一个 xml 文件,它记录了窗体上各部件的属性和位置分布。
扩展:【新建窗体】对话框中提供有三种类型(5种模板)的窗体供选择:
1) Main Window类型的窗体模板:该模板是一个基于 QMainWindow 类的窗体,具有主窗口的特性,顶部通常显示标题栏和边框,窗口上有主菜单栏、工具栏、状态栏等。
2) Widget 类型的窗体模板:该模板是一个基于 QWidget 类的窗体。QWidget 类是所有界面组件的基类,如 QLabel、QPushButton 等界面组件都是从 QWidget 类继承而来的。QWidget 类也是 QDialog 和 QMainWindow 的父类,基于 QWidget 类创建的窗体可以作为独立的窗口运行,也可以嵌入到其他界面组件内显示。
3) Dialog 类型的窗体模板:该模板是一个基于 QDialog 类的窗体,具有一般对话框的特性,如可以模态显示、具有返回值等。可以设置不同的标题栏外观,主要用于通知或收集输入窗口,如颜色对话框、字体对话框等,具体以下有3种:,
——(1) 底部带有对话框按钮的对话框
——(2) 右侧带有对话框按钮的对话框
——(3) 不带对话框按钮的对话框
3.1.2【编辑】主菜单项
该主菜单项下的子菜单项如下图示:
其中前9个子菜单项意思很容易理解,就不作介绍了。
最后4个子菜单项表示4种 GUI 窗口部件编辑模式:
- 【编辑窗口部件】子菜单项:对应部件编辑模式,此模式下可以在 Qt Designer 中添加 GUI 窗口部件,以及修改它们的属性和外观。
- 【编辑信号/槽】子菜单项:对应信号和槽编辑模式,此模式下可以在 Qt Designer 中的窗口部件上关联 Qt 已经定义好的信号和槽。
- 【编辑伙伴】子菜单项:对应伙伴编辑模式,此模式下可以在 Qt Designer 中的窗口部件上建立某个部件和其他窗口部件的伙伴关系。
- 【编辑 Tab 顺序】子菜单项:对应 Tab 编辑模式,此模式下可以在 Qt Designer 中的窗口部件上设置 Tab 键在窗口部件上的焦点顺序。
3.1.3【窗体】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 前9个子菜单项,均为布局相关的,会在后续文章中详细介绍。
- 点击【预览于】子菜单项,会显示3个下级子菜单项(【windowsvista 风格】、【Windows 风格】、【Fusion 风格】),在预览时分别对应三种风格的窗体。
- 点击【预览…】子菜单项(或按快捷键 Ctrl + R)后,可以对所创建的窗体进行预览。
- 点击【View C++ Code…】子菜单项后,可以查看该窗体对应的 C++ 代码。
- 点击【View Python Code…】子菜单项后,可以查看该窗体对应的 Python 代码。
- 点击【窗体设定…】子菜单项后,弹出【窗体设定】对话框窗口。
3.1.4【视图】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 勾选【窗口部件盒】子菜单项后,在主窗口的停靠区出现【窗口部件盒】
- 勾选【对象检查器】子菜单项后,在主窗口的停靠区出现【对象检查器】
- 勾选【属性编辑器】子菜单项后,在主窗口的停靠区出现【属性编辑器】
- 勾选【资源浏览器】子菜单项后,在主窗口的停靠区出现【资源浏览器】
- 勾选【动作编辑器】子菜单项后,在主窗口的停靠区出现【动作编辑器】
- 勾选【信号/槽 编辑器】子菜单项后,在主窗口的停靠区出现【信号/槽 编辑器】
- 【工具栏】子菜单项,可以对启用哪些快捷按钮进行设置。
3.1.5【设置】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 点击【首选项…】子菜单项后,出现【首选项】对话框(如下图示),可根据需要进行相关设置。
- 【其他字体】子菜单项
3.1.6【窗口】主菜单项
该主菜单项下的子菜单项如下图示:
其中:
- 点击【最小化】子菜单项后,将当前窗体设置为最小化。
- 下面列示出 Qt Designer 中已经打开的窗体(当前正在编辑的窗体名前会有个圆点)
3.1.7【帮助】主菜单项
该主菜单项下的子菜单项如下图示:
各子菜单项功能一目了然,就不作进一步介绍了。
3.2 工具栏(Tool Bar)
在编辑窗体时经常会用到工具栏上的快捷按钮,实际上所有工具栏上的快捷按钮均可以通过菜单栏获得。
下图是缺省配置的工具栏:
共分为四组:
- 第一组(3个):依次对应主菜单项【文件】下的【新建】、【打开】、【保存】子菜单项。
- 第二组(2个):依次对应主菜单项【编辑】下的【放到后面】、【放到前面】子菜单项。
- 第三组(4个):依次对应主菜单项【编辑】下的【编辑窗口部件】、【编辑信号/槽】、【编辑伙伴】、【编辑 Tab 顺序】子菜单项。
- 第四组(8个):依次对应主菜单项【窗体】下的【水平布局】、【垂直布局】、【使用拆分器水平布局】、【使用拆分器垂直布局】、【网格布局】、【在窗体布局中布局】、【分拆布局】、【调整大小】子菜单项。
因工具栏上的按钮均对应菜单栏下的各子菜单项,其功能就请参见菜单栏部分了。
3.3 状态栏(Status Bar)
在状态栏中通常会显示一些跟当前操作相关的信息。
3.4 窗口部件盒(Widget Box)
窗口部件盒提供了用于设计窗体的一些标准的通用部件和布局。窗口部件盒中提供了8个分组类别,每个分组类别都包含具有相似用途或相关功能的部件。
通过单击窗口部件盒中的分组类别标签旁边的手柄,可以显示该分组类别中的所有可用对象(组件或布局)。当窗口处于【编辑部件模式】时,可以从窗口部件盒中选择适当的部件拖动到窗体编辑器中,然后将其拖放到所需的位置来将该组件添加设计到窗体。
3.4.1 布局分组类别(Layouts)
3.4.2 间隔分组类别(Spacers)
3.4.3 按钮分组类别(Buttons)
3.4.4 项目视图分组类别(Item Views)
Item Views 基于模型/视图(Model/View)结构,视图(View)与模型数据(Model Data)关联实现数据的显示和编辑。
3.4.5 项目部件分组类别(Item Widgets )
Item Widgets 直接将数据存储在每一个项里。一个项存储了文字、文字的格式、自定义数据等。
3.4.6 容器分组类别(Containers)
3.4.7 输入部件分组类别(Input Widgets)
3.4.8 显示部件分组类别(Display Widgets)
3.5 窗体编辑器
窗体编辑器中可以对窗体进行可视化设计,选择左侧窗口部件盒中的相应组件(或布局),通过鼠标拖曳至此区域,放置在相应位置。
上面示例图中分别从左侧窗口部件盒中的【Dispaly Widgets】分组类别中选择了2个 QLabel 部件,从【Input Widgets】分组类别中选择了2个 QLineEdit 部件,从【Buttons】分组类别中选择了2个 QPushButton 部件,通过鼠标拖曳至此区域(主窗体),并进行排列放置。
注1:顶部显示的“Main Window - untitled*” 表示该窗体尚未命名。
注2:此区域也可以通过快捷按钮(Ctrl + R)来对设计后的窗体的效果进行预览。
注3:更多信息会在后续文章中加以介绍。
3.6 对象检查器(Object Inspector)
对象检查器中用树形视图列示出了窗体上所有部件、以及各部件之间的布局和包含关系。
树形视图有两列,分别显示各部件的对象名称(objectName)和对应的类名称。
注:更多信息会在后续文章中加以介绍。
3.7 属性编辑器(Property Editor)
属性编辑器中列出了被选中的窗体或部件的各种属性和对应的值,可以在属性编辑器里修改这些属性的值。
属性编辑器的内容分为两列,其中左侧列是属性的名称,右侧列是该属性对应的值。
属性自上而下分为多个组,实际上代表了类的继承关系。
简单示例介绍:
——上部的 MainWindow : QMainWindow 表示这是一个 QMainWindow 窗体;
——objectName 属性:表示窗体/部件的对象名称,窗体中的每一个部件都需要一个唯一的对象名称,以便在代码中被引用。本例中 objectName 属性的值为“MainWindow”,表示窗体的对象名称为:MainWindow。该值可以进行修改。
——上图可以看出 QMainWindow 类的继承关系为: QObject 类 <– QWidget 类 <- QMainWindow 类。
——其他众多属性本文就不一一说明了,会在后续文章中陆续加以介绍。
注:更多信息会在后续文章中加以介绍。
3.8 信号与槽编辑器(Signal/Slot Editor)
信号与槽编辑器中列出了在 Qt Designer 中关联的信号和槽,通过双击列中的对象或信号/槽,可以进行对象和信号/槽的选择。
注:更多信息会在后续文章中加以介绍。
3.9 资源浏览器(Resource Browser)
资源浏览器中列出了程序使用的资源文件(*.qrc)以及相应的资源。
在该编辑器中可以创建或删除资源文件,也可以添加或取消资源。
注:更多信息会在后续文章中加以介绍。
3.10 动作编辑器(Action Eidtor)
动作编辑器中列出了为窗口部件设计的动作(QAction),并可以创建新动作和删除动作。
动作编辑器提供了一组快捷工具按钮:
- 【新建】按钮
点击该按钮,弹出一个【新建动作】对话框(如下图示),完成相关信息设置,点击【OK】按钮后即可完成创建一个新动作。
注:创建动作后,可以在任何适用的动作处使用它。
- 【删除】按钮
点击该按钮,即可删除被选中的动作。
- 【复制】、【粘贴】按钮
动作编辑器可以在菜单栏、工具栏和窗体之间复制和粘贴动作。
- 【配置动作编辑器】按钮
动作编辑器提供两种视图:图标视图 和 细节视图,点击该按钮,可进行这两种视图的切换。
要将动作添加到菜单栏或工具栏,只需在动作编辑器中在动作上按下鼠标左键,然后将其拖动到首选位置即可。
注:更多信息会在后续文章中加以介绍。
结束语
本系列介绍如何在 Python 中使用 Qt for Python 进行 GUI 应用程序开发。
本文是《Qt for Python 学习笔记》系列第五篇,对可视化设计工具 Qt Designer 进行了一个概览介绍,让读者对 Qt Designer 工具有个初步的认识。
接下来会介绍如何借助 Qt Designer 工具进行可视化界面设计并完成一个 PySide6 GUI 应用程序开发的过程,敬请期待!
希望本文能对您有所帮助!若文中存在疏忽不足或错误,还请不吝赐教!
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
