首页
学习
活动
专区
圈层
工具
发布

【从零开始的Qt开发指南】(十二)Qt 布局管理器终极指南:5 大布局 + 实战案例,搞定所有界面排版需求

3.1 核心属性与 API 垂直布局的核心属性继承自QLayout,重点关注以下实用 API: API 方法 功能说明 实用场景 addWidget(QWidget *widget, int...5.1 核心属性与 API 网格布局的核心是 “行列坐标” 和 “拉伸系数”,关键 API 如下: API 方法 功能说明 实用场景 addWidget(QWidget *widget, int row...layout->addWidget(button4, 3, 0); // 每个按钮独占一行和一列 //此处设置的行数和列数只是用来决定控件之间的相对位置 layout->addWidget...行列坐标错误:网格布局的行号和列号从 0 开始,添加控件时需确保坐标连续,避免出现 “空行列” 导致控件错位; 跨行列参数顺序:addWidget的跨行列参数是rowSpan(跨行数)在前,columnSpan...统一边距和间距:整个项目的布局边距(建议 20-30px)和间距(建议 15-25px)保持一致,提升界面统一性; 灵活使用拉伸因子:通过拉伸因子控制控件缩放优先级,重要控件(如文本编辑区)设置更大的拉伸因子

86722

在 PyQt5 中构建「省-市-县」级联选择器

二、级联选择器原理 其实普通的级联选择器其构成并不复杂。 无非是选择一级的时候,唤起二级的渲染和显示,选择二级的时候,唤起三级的渲染和显示; 至于各级是用列表还是用下拉框,都是其次的。...下面,我们就使用 PyQt5 构建一个省市县的级联选择器。...最终的效果如下所示: 三、构建一个桌面应用的级联选择器 准备数据 要实现省市县的级联选择,省市县的数据必不可少,在这里,我们使用的是一个 JSON 格式嵌套的省市县数据,如下图所示: 数据来源于:https...最终以data.json文件的形式提供给代码读取。...='utf-8') print(self.data_json) 我们的级联选择器通过三个下拉选择器QComboBox()来实现,然后三个下拉选择器用一个网格布局QGridLayout

3.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【QT】布局管理器

    代码示例:使用 QVBoxLayout 管理多个控件. 1)编写代码, 创建布局管理器和三个按钮. 并且把按钮添加到布局管理器中. 使⽤ addWidget 把控件添加到布局管理器中....核心属性 (和 QVBoxLayout 属性是⼀致的): 代码示例:使用 QHBoxLayout 管理控件 1)编写代码, 创建布局管理器和三个按钮. 并且把按钮添加到布局管理器中....网格布局 Qt 中还提供了 QGridLayout ⽤来实现⽹格布局的效果. 可以达到 M * N 的这种⽹格的效果....核心属性: 整体和 QVBoxLayout 以及 QHBoxLayout 相似. 但是设置 spacing 的时候是按照垂直⽔平两个⽅向来设置的....Spacer 使用布局管理器的时候, 可能需要在控件之间, 添加⼀段空白. 就可以使用 QSpacerItem 来表示. 核心属性: 上述属性在构造函数设置即可.

    87510

    用Qt写软件系列五:一个安全防护软件的制作(3)

    Qt中提供了一个用于分割窗体的类:QSplitter。这个类的使用也非常简单,准备好需要分割的窗口,设置好分割方向和比例即可。...我们将其宽度设置为1个像素宽,setDisabled(true)将其设置为不可拖动的。这样一来,用户就无法用鼠标拖拽左右窗口的大小了。看看效果: ?      ...在分割出来的子窗口中,还可以进行进一步的分割,也就是QSplitter的嵌套使用。...堆栈式窗口及Tab选项卡        堆栈式窗口取义于数据结构中的堆栈,也就是说多个窗口堆叠在一起,当用户点击对应层的窗口时进行切换。以腾讯QQ的设置窗口为例,看看到底是怎样一种效果: ?...这么说来,QTabWidget和QStackedWidget的结构是非常相似的。其实,编写Qt程序的时候,我们要组合一个窗口其实是非常简单的。

    2.2K90

    我用 Python 写了一款炫酷音乐播放器,想听啥随便搜!

    在下方公众号后台回复:面试手册,可获取杰哥汇总的 3 份面试 PDF 手册。 前言 昨天晚上坐在电脑面前,想着一边撸代码,一边听音乐。搜了搜自己想听的歌,奈何好多歌曲都提示需要版权,无法播放!...底部主要来显示当前播放音乐,播放进度条,音量控制,上一首/下一首,暂停/开始,播放方式等附加功能 关键字音乐列表爬虫 通过输入的搜索关键字和选择的音乐来源,自动爬取对应的音乐数据 将爬取获取的音乐名进行列表显示...,显示在中间主体搜索页 音乐播放 音乐列表中我们需要双击某一首歌,对爬取的歌曲封面图和歌曲进行下载 下载成功,对音乐文件根据播放进度条进行播放 附加功能 播放音乐时,我们还需要有播放暂停和启动功能 音量控制提高或者降低...UI设计排版布局 基于功能点,我们首先考虑进行简单的UI布局设计,这里我们使用的是pyqt5。...关键字音乐列表爬虫 我们可以根据输入的关键字和音乐来源进行音乐爬取。这里我们需要通过多线程,将歌曲、歌手、歌曲url地址全都获取。

    2.3K70

    Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)

    (QGridLayout) QGridLayout(网格布局)是将窗口分隔成行和列的网格来进行排列。...通常可以使用函数addWidget()将被管理的控件(Widget)添加到窗口中,或者使用addLayout()函数将布局(Layout)添加到窗口中。...也可以通过addWidget()函数对所添加的控件设置行数和列数的跨越,最后实现网格占据多个窗格。...5.1、在布局中添加其他布局 整个例子,首先全局布局采用的是水平布局,局部布局采用的分别是水平布局、垂直布局、网格布局和表单布局,准备4个QWidget控件:hwg、vwg、gwg和formlayout...QSplitter类中的常用方法如下表所示: 通过一个例子,了解QSplitter布局的使用,在这个例子中,显示了使用两个QSplitter组织的两个QFrame控件。

    5.6K40

    Qt入门-layout布局

    在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。        ...前面的程序中都是使用setGeometry()方法定位控件的位置,这个方法比较笨拙。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控件。        ...常用的三种布局方法: (1)使用水平布局类QHBoxLayout; (2)使用垂直布局类QVBoxLayout; (3)使用网格布局类QGridLayout。 这三种方法可以嵌套使用。...在界面中,最外部是mainLayout,它的类型是垂直布局类QVBoxLayout。它包含了两个水平布局类QHBoxLayout,分别是topLayout和bomLayout。...4)fromRow:指放置控件的起始网格行号;     5)fromColumn:指放置控件的起始网格列号;     6)rowSpan:指放置控件占多少行;     7)columnSpan:指放置控件占多少列

    2.5K20

    javaScript代码飘红报错看不懂?读完这篇文章再试试!

    ):使用了未定义的变量。...// 1、变量未定义便直接使用 console.log(my); // 报错:Uncaught ReferenceError: my is not defined // 翻译:my未定义 // 2、将变量赋值给一个无法被赋值的东东...obj.userName); // 报错:Uncaught TypeError: Cannot read property 'userName' of undefined // 翻译:undefined的环境下无法读取属性...原因:对象中属性与其对应的值之间使用“=” // 语法错误有很多,在此就不一一列举了 三、通过try...catch处理Error 1、被try包裹的代码块一旦出现Error,会将Error传递给catch...•使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低。•在try中,尽量少的包含可能出错的代码。•无法提前预知错误类型的错误,必须用try catch捕获。•finally可以省略。

    9.1K20

    Qt | TCP客户端简单实现+TCP助手测试

    数据传输:支持发送和接收数据,数据以字节流的形式进行处理。信号和槽机制:提供信号(signals)和槽(slots)机制,以便于处理异步事件,例如连接成功、接收到数据、连接断开等。...接收数据:void readAll(): 读取所有可用的数据。QByteArray read(qint64 maxSize = 0): 读取指定大小的数据。...它可以处理多种数据类型,如整型、浮点型、字符串等,并且支持对数据的序列化和反序列化。QDataStream通常与QFile、QTcpSocket等类一起使用,以便于文件和网络通信中的数据操作。...QDataStream &operator>>(QVariant &var): 从数据流中读取变体值。流状态和版本:bool atEnd() const: 判断是否到达流的末尾。...    main.cpp             # 主程序的源文件)# 设置可执行文件的属性,使其在 Windows 和 macOS 上为特定类型set_target_properties(fortuneclient

    2.2K10

    Qt for Python的4种基础布局管理

    布局用于规范控件内子控件的排列和摆放顺序,使得图形界面内的控件位置井然有序。...一、Qt For Python的几种常用布局 在图形界面编程中,一般存在以下几种常见的布局方式: 水平布局:布局内的控件沿水平方向排列; 垂直布局:布局内的控件沿垂直方向排列; 网格布局:布局按照行和列进行划分...,布局内的控件分列不同的行和列中; 表单布局:布局实现表单显示方式的布局。...四、网格布局 网格布局与水平布局和垂直布局皆不一样,网格布局内部通过一个无形的网格来对其中的控件进行布局。 ? 如同表格一样,网格布局里面分位行和列单元格,同时一个单元格可以占多行或者多列。...六、最后 以上就是Qt For Python中常见几种布局的使用方法了。虽然还有很多种其他的布局方法,但这4种是最基础最常使用的布局方法,大家可以根据项目的实际需求灵活地使用布局。 ?

    2.4K20

    嵌入式Qt-实现两个窗口的切换

    之前的文章,分别有介绍过使用Qt程序实现一个时钟和一个秒表,本篇,来将这两个功能整合在一起,实现两个页面的随意切换,并且两个页面能独立运行,互不影响。...ui_TimerWidget.h,构造函数继承的ui也是Ui::TimerWidget 2.3 主程序框架 移植好Qt时钟程序和Qt秒表程序后,就可以将这两个功能加入到堆栈窗口中了。...注意,下面的页面切换,我改用两个QPushButton来实现Qt时钟和Qt秒表的页面切换,并使用QGridLayout进行布局,使得两个按钮位于整个界面的左侧。...,Qt的信号和槽机制,需要信号和槽函数的参数一致或信号的参数多于槽的参数,而按钮按下没有参数,但切换堆栈页面需要一个参数(索引号,指示要展示第几个页面),因此不能直接使用pStack的setCurrentIndex...4 总结 本篇介绍了介绍了QStackedWidget的使用,通过这个类,实现了Qt时钟和Qt秒表这两个页面可以随意切换。

    2.1K20

    PyQt中布局管理

    布局管理是GUI编程中的一个重要方面。布局管理是一种如何在应用窗口上放置组件的一种方法。我们可以通过两种基础方式来管理布局。我们可以使用绝对定位和布局类。...使用布局管理器管理布局是组织窗口小部件的首选方式 绝对定位 程序员以像素为单位指定每个小部件的位置和大小。...在上面的例子中我们使用move()方法定位了一些标签组件。在使用move()方法时,我们给move()方法提供了x和y坐标作为参数。move()使用的坐标系统是从左上角开始计算的。x值从左到右增长。...微信截图_20181206111338.png 网格布局 QGridLayout是最通用的布局类。它将空间划分为行和列。 #!...布局使用了QGridLayout布局 我们创建了一个网格布局并且设置了组件之间的间距。

    2.2K30

    Qt Designer基本控件介绍——Display Widgets(显示小部件)

    __init__() # 使用super函数可以实现子类使用父类的方法 self.setWindowTitle("记事本") self.setWindowIcon(QIcon...setViewportUpdateMode(): 设置视口更新模式,QGraphicsView 使用这个属性来决定当场景改变或者暴露时候如何刷新场景的区域,通常不需要修改这个属性,但是在有些情况下做这个工作可以改进绘图性能...是一个设置日历的控件,它提供了一个基于月份的视图,允许用户通过鼠标和键盘选择日期,默认是选中今天,可以对日期的范围进行限制。...value() :与当前显示的值有关,若当前显示的是数字,则该属性的值为0。...,可以在PyQt和Qt的应用中显示图形(包括2D和3D图形),在Designer中,该部件没有任何独有属性,都是继承的QWidget的属性。

    9.6K20

    史上最全的PyQt5操作手册

    PyQt5操作手册 一、安装PyQt5 1.确保已安装Python解释器,版本为3.5以上; 2.使用pip安装PyQt5:在命令行中输入pip install PyQt5,等待安装完成。...; QProgressBar:进度条,用于显示任务进度; QDateTimeEdit:日期和时间选择框; QFileDialog:文件对话框,用于选择文件或文件夹。...以上只是一些常用控件的示例,更多控件的使用与属性设置可以查阅PyQt5官方文档。...七、布局管理器 QVBoxLayout:垂直布局,将控件垂直排列; QHBoxLayout:水平布局,将控件水平排列; QGridLayout:网格布局,将控件按网格排列; QVBoxLayout和QHBoxLayout...常用于窗口的垂直或水平排列,而QGridLayout用于更复杂的网格布局。

    84610

    PyQt 编程入门(三)

    本例讲解计算器的编程。涉及到的内容有:单行文本框、多行文本浏览框和按钮的应用,布局(含垂向箱型布局以及栅格布局)和 事件(含按钮单击,Enter建按下事件)。程序的显示效果如下图。...bttexts: buttons.append(QPushButton(bttext))#循环创建多个按钮 glayout = QGridLayout()#创建网格布局...#向网格布局添加控件 .addWidget(Qwidget,row,column) # or .addWidget(Qwidget,row,column,rowSpan...在PyQt 中我们可以使用绝对定位(给定x和y坐标) 和使用布局类。但是,使用绝对定位主要有以下缺点: 1. 如果我们改变了窗口的大小,控件的位置可能变得不协调 2....布局类有 QHBoxLayout(水平箱型布局)、QVBoxLayout(垂向箱型布局)和 QGridLayout(网格布局) 。布局可以嵌套使用,如本例中网格布局就嵌套在垂向箱型布局中。

    1K30

    6.Layout Management(布局管理)

    ,请及时指出,我会很快修正 一些关键字会直接使用英文 目前该专题为纯理论,实际操作在完成后有演示 1....绝对位置 我们可以使用setGeometry() 方法设置widget在窗体上的位置和大小 import sys from PyQt4 import QtGui def window(): app...(行列)的方式排列起来 我们可以将widget 放在制定的行和列中 可选的 我们还可以扩展行和列的大小,这样可使其相对于其他的widget更高和宽 它有如下方法 addWidget(QWidget, int...win.show() sys.exit(app.exec_()) if __name__ == '__main__': window() 上面的程序首先新建一个QGridLayout 之后使用循环的形式增加...2.3 QFormLayout 该布局可以让我们很方便的创建一个表单布局 即只有两列的网格布局 第一列为label 第二列为输入框 它有如下3个方法 addRow(QLabel, QWidget) 增加包含

    99520

    用Python写一个“听后即焚”的极简音乐播放器

    这个极极极简的音乐播放器类似于“阅后即焚”的软件,播放器可以随机播放歌曲,获取下一首歌曲,不能重新播放上一首歌曲,不能获取歌曲的名称和演唱者。听过的歌曲,就像过眼云烟,放完即散。...这个播放器一共有6个控件: 左上角的程序关闭按钮; 左侧的播放状态标签; 顶部的slogan; 播放/暂停按钮; 下一首按钮; 播放进度条; 基于以上控件,我们用一个网格布局来排列: class Music...format=json") # print(reps.json()) file_url = reps.json()['data']['url'] self.finished_signal.emit...在这里,我们借助Qt提供的QtMultimedia子模块中的QMediaPlayer来实现MP3音乐的播放,QtMultimedia的详细使用可见Qt的官方文档:https://doc.qt.io/qtforpython...播放音乐按钮需要控制和判断音乐的状态,可通过QMediaPlayer的mediaStatus()方法获取,并以此来进行判断: ?

    2.3K20
    领券