如上图,提示
控件
已经被
挤压
得看不出原型。
使用了setWidgetResizable,发现没啥效果。QScrollArea在初始化完之后里面的scrollAreaWidgetContents也就是里面的Widget已经固定大小了。
最后用的方法是每次点击添加时候,重新设置QScrollArea里面的Widget大小,也就是固定死大小。
m_pScrollWidget->setMinimumSize(400
项目某页面的
布局
,之前都是用绝对位置去
布局
的。后来需求各
控件
的位置需要随着某一
控件
的隐藏和显示去变化,这就很不方便,需要各种根据高度和显示状态去计算
控件
坐标并更新。
随着需求的增加,绝对位置已经满足不了各种能够变化,问题频出。
所以需要
layout
作为容器,容纳
控件
,以适应各
控件
的位置动态变化。
-问题如下图所示:
控件
2高度变化之后竟然和其他
控件
重叠
了。
造成了很大的困扰。
简而言之,言而简之,我的
layout
所在主窗口的大小是固定不
上一章
中
我们从头一步一步地新建项目并运行了窗口,本章就正式踏入
Qt
界面编程之路。在本章节,我们先用代码编写界面,进行简单的
控件
放置,然后用代码进行
布局
;之后使用
Qt
Designer进行
控件
放置和界面
布局
,这使得复杂界面的设计变得简单起来。
I am trying to make widgets overlap partly in a
Qt
layout
. My current
layout
is the following, achieved with a Q
VBo
x
Layout
containing four QHBox
Layout
children:I'm trying to regroup cards of the same ...
一、实验环境1.Windows10x642.anaconda4.6.9 +python3.7.1(anaconda集成,不需单独安装)3.pyinstaller3.5二、问题描述1.
Qt
Designer
布局
窗口如下
控件
支持伸展2.调用代码如下class BinMerge(QMainWindow):def __init__(self, *args):super(BinMerge, self)._...
因为被分派了一个bug, 需要解决弹出的对话框居
中
问题. 一开始我还觉得这个问题很简单, 直接用move就行了, 奈何怎么都不能居
中
. 经过一系列测试发现, 在获取父窗口的大小时, 会发生变动, 导致计算总会有偏差. 最后去翻了一下QDialog的源码, 找到了这么一个方法
至此有了一个新的思路. 另外, 我也想起了侯捷大师的一句话: 源码之前, 了无秘密! 如果问题不能解决, 就多找找源码看看, 也许源码里面会有多种解决方法.
通过这次修改bug, 我也在此总结一下目前我了解的一些移动
控件
位
在py
qt
5
中
要做到自适应
布局
,必须应用
Layout
类
下面列出类似于 html
中
float 功能的
布局
方法:
实现原理: Py
Qt
5
中
的
布局
中
,stretch 属性类似于一个可自适应的空白
布局
。会尽可能将周围的组件
布局
向外
挤压
from Py
Qt
5.
Qt
Widgets import Q
VBo
x
Layout
, QHBox
Layout
# 垂直居
中
def vcenter_
layout
(*widgets):
vbo
x = Q
VBo
x
Layout
()
vbo
x.addStretch()
for widget in widgets:
vbo
x.addWidget(widge
使用
布局
管理器可以使
控件
自适应窗口大小,但是存在几个坑。
第一,使用
布局
管理器后无法手动调整
布局
管理器
中
的大小,只能通过调整主窗口的大小控制
布局
管理器的大小让它自动调整,如果想要让
布局
管理器
中
的
控件
以自己想要的形式进行排布,只能通过调整
布局
中
各个
控件
所占空间的比例,以自己希望的比例显示。通过setStretch函数,或者从ui设计师
中
进行设置。
第二,使用
布局
管理器的时候,Geometry的值是s...