问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Qt Designer 详细介绍

创作时间:
作者:
@小白创作中心

Qt Designer 详细介绍

引用
CSDN
1.
https://blog.csdn.net/2301_81210371/article/details/140746298

Qt Designer是Qt官方推出的一款图形化界面设计工具,通过拖拽控件的方式可以快速制作出GUI界面。本文将详细介绍Qt Designer的使用方法,包括其安装、基本操作、第三方控件库的使用以及一些实用技巧。

一、Qt Designer简介

1.1 什么是Qt Designer

Qt Designer是Qt官方推出的图形化制作GUI界面的工具。通过拖拽控件的方式就可以快速地制作出一个GUI界面。可视化搭建好图形界面之后,只需要关注业务代码即可。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离。使用Qt designer就是为了快速创建出UI界面,毕竟手动实现界面效率还是比较低的,特别是还要考虑各种固定组件的布局位置。组件触发可以放在Python代码中完成。官网说明:https://doc.qt.io/qt-6/designer-to-know.html

Qt Designer的使用方法其实不难,从左侧的组件库里面拖拽组件放到窗口里面。然后可以像控制窗口一样可以用左键拖拽、缩放组件。最基础的使用就是这些,懂了这些操作完全就可以自己拖拽组件搭配出想要的界面。

Android界面的可视化设计。Android Studio自带可视化设计。
Web前端Bootstrap可视化布局系统:https://www.bootcss.com/p/layoutit/

1.2 安装Qt Designer

安装Qt Designer的方法有好几种:

  • 安装官方提供的Qt Creator开发软件。Qt Creator是一个IDE,是针对Qt优化的C++开发平台,里面内置了许多Qt开发相关的工具,Qt Designer就在其中。
  • 安装任意Qt Python包
  • 安装Maya自带Qt Designer

这里以安装官方的Python包PySide6为例,使用豆瓣源安装:

pip install -i http://pypi.doubanio.com/simple/ PySide6 --trusted-host pypi.doubanio.com

安装后就可以在Python的site-packages\PySide6目录中找到designer.exe,可以创建个快捷方式放在桌面上。

1.3 第三方控件库

Designer本身自带的控件比较少,控件样式显示效果也一般,可以安装第三方控件库来增加控件数量,和美化GUI界面显示。告别原始UI样式。

Fluent Design控件库:https://github.com/zhiyiYo/PyQt-Fluent-Widgets
在线文档:
https://pyqt-fluent-widgets.readthedocs.io/zh-cn/latest/index.html
https://qfluentwidgets.com/zh/pages/about

Fluent Design是一个强大、可扩展、美观优雅的组件库,包含了大量类似InfoBar、Flyout、CommandBar以及Pivot等组件类,可以组合使用并直接在设计师上实现任何UI设计。拖拖拽拽,无需书写QSS,即可快速构建美观的界面
PySide2、PySide6、PyQt6控件库:PySide2、PySide6、PyQt6 。

注意:不要同时安装PyQt-Fluent-Widgets、PyQt6-Fluent-Widgets、PySide2-Fluent-Widgets、PySide6-Fluent-Widgets,因为包名都是qfluentwidgets.

1.3.1 运行Fluent示例

安装完pyqt-fluent-widgets包后,下载仓库源代码,切换到examples目录下运行示例代码。

cd examples/gallery
python demo.py

1.3.2 启动Fluent Design

运行python ./tools/designer.py来启动安装了PyQt-Fluent-Widgets插件的QtDesigner。如果操作成功,QtDesigner的侧边栏中将会显示PyQt-Fluent-Widgets的组件。

建议使用虚拟环境。

conda create -n qt5
conda activate qt5
pip install PyQt5
pip install pyqt5-tools

Fluent Design风格PyQt/PySide组件库:https://blog.csdn.net/zhiyiYo/article/details/131328168

二、启动Qt Designer

启动后主窗口如下,弹出一个窗口选择Form模板,其中Widget与MainWindow最常用。

这里选择MainWindow点击创建。然后就可以拖拽左侧的组件到窗口上。按住ctrl拖拽可以快速复制组件。Ctrl+R (菜单栏 —> 窗体 —> 预览) 可以预览设计好的界面。

工具栏上的布局按钮可以改变窗口的布局,也可以从左侧拖拽相关的布局到窗口上。通过这些布局就可以让组件等分排布,从而减少UI的凌乱,让界面看起来更加美观

  • QHBoxLayout - 横向布局。 就是将布局内部的组件 水平方向 等分排列
  • QVBoxLayout - 竖向布局。就是将布局内部的组件 垂直方向 等分排列
  • QGridLayout - 网格布局。就是将布局内部分成好多网格,类似Excel表格。可以让组件占用多个网格,或者空出多余的网格。

2.1 对象查看器

可以查看主窗口中已放置的对象(就是已经拖拽的控件)以及其相应地Qt类。可以快速查看有哪些哪些控件,以及控件所属层级。

2.1.1 将QWidget修改为特定组件

Qt Designer无法创建一个纯按钮之类的ui文件。默认的ui文件必须是个容器。但是有个需求就是要弄一个纯 按钮 的ui文件,应该要怎么实现。可以通过修改xml类来实现。首先默认创建一个QWidget的ui文件。然后将ui文件的QWidget修改为QPushButton,重新用QtDesigner打开这个文件。会发现Qt Designer里面呈现的是一个按钮而不是QWidget 。

2.1.2 给QWidget添加MenuBar

也可以实现给QWidget添加QMenuBar的骚操作。默认情况下,只有QMainWindow可以在Qt Designer里面配置QMenuBar实现下来菜单。由于左侧的组件列表没有QMenuBar组件,所以根本就无法添加到QWidget里面。通过编辑ui文件,然后用上面的方法将两个ui文件拼接到一起,就可以实现这种骚操作。这样就不需要手动写QMenuBar代码了。

2.1.3 组件提升

默认情况下,Qt Designer只能拖拽一些基础组件,如果想要用自定义的组件,似乎就无法实现了。其实不然,通过promote提升,可以实现将组件提升为第三方类。当然,组件提升无法在Qt Designer直接预览到效果,只能看到基类的UI。如果要想实现在Qt Designer直接看到效果,也可以用C++开发Qt Designer的插件,直接扩展出自定义组件。基础的提升操作如下。

看起来似乎也是针对C++才有效。其实不然。

先添加一个配置头文件的配置,然后再点击Promote来提升组件。下面编译这个ui文件可以看到神奇的promote效果。

from PySide2 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.pushButton = MPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(60, 60, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(QtWidgets.QApplication.translate("Form", "Form", None, -1))
        self.pushButton.setText(QtWidgets.QApplication.translate("Form", "PushButton", None, -1))

from dayu_widgets.push_button import MPushButton

头文件自动转为Python的库,类名就对应库里面的类。只要自定义的组件类按照默认的构造函数传参,就不存在什么问题。这个东西其实也可以直接用ui文件加载的方式调用起来,这里用到了QUiLoader registerCustomWidget的使用方法。通过这个方法可以将自定义的组件注册到QUiLoader里面,然后QUiLoader读取ui文件的时候自动映射到第三方组件上。示例:dayu_widget。这个dayu_widget第三方库通过Qt Designer直接嵌入的。PyToolkit文章

2.2 属性编辑器

右侧的“属性编辑器”可以编辑UI控件的属性,不过很多时候都是用代码来动态修改这些属性。objectName比较重要,因为在代码中是通过objectName这个属性来调用控件的。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号