python qtdesigner 提升类_pyqt5 qtdesigner设计好的UI界面 增加底部布局之后全部控件集合在了左上角...

没有加底部布局之前如图:

加了底部布局之后:

代码如图:

main.js封装:

import sys

from PyQt5.QtWidgets import QMainWindow, QApplication

from Ui_MainWindow import *

class Demo(QMainWindow, Ui_MainWindow):

def __init__(self):

super(Demo, self).__init__()

# 将UI界面布局到Demo上;

self.setupUi(self)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

部分UI转换成的py代码:

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(942, 666)

# 定义的底层栅格布局

self.gridLayout_main = QtWidgets.QGridLayout(MainWindow)

self.gridLayout_main.setContentsMargins(15, -1, -1, -1)

self.gridLayout_main.setVerticalSpacing(20)

self.gridLayout_main.setObjectName("gridLayout_main")

# 子布局之一

self.gridLayout_3 = QtWidgets.QGridLayout()

self.gridLayout_3.setObjectName("gridLayout_3")

self.verticalLayout_4 = QtWidgets.QVBoxLayout()

Qt Designer中设置垂直布局并让上方QWidget部分重叠下方QWidget,可以使用QStackedWidget或者 QVBoxLayout 结合 QLayout 的.addWidget 和 setAlignment 来实现。QStackedWidget允许你堆叠多个QWidget,并可通过索引来切换显示。 首先,你需要创建两个QWidget,假设我们分别命名为`widgetTop`和`widgetBottom`: ```python from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QStackedWidget from PyQt5.QtCore import Qt class MainWidget(QWidget): def __init__(self): super().__init__() self.stack = QStackedWidget() # 创建两个QWidget widgetTop = QWidget(self) widgetTop_layout = QVBoxLayout(widgetTop) widgetTop_label = QLabel('这是上方QWidget', widgetTop) widgetTop_layout.addWidget(widgetTop_label) widgetBottom = QWidget(self) widgetBottom_layout = QVBoxLayout(widgetBottom) widgetBottom_label = QLabel('这是下方QWidget', widgetBottom) widgetBottom_layout.addWidget(widgetBottom_label) # 将它们添加到QStackedWidget中,设置上方QWidget部分重叠 self.stack.addWidget(widgetTop) self.stack.addWidget(widgetBottom) # 设置顶部QWidget的高度为一半屏幕高度,然后重叠 screen_height = self.height() widgetTop.setFixedHeight(screen_height // 2) widgetTop.setAlignment(Qt.AlignTop | Qt.AlignLeft) # 左上角对齐 self.setLayout(QVBoxLayout()) self.layout().addWidget(self.stack) # 为了适应窗口大小变化,你可以使用信号槽处理resize事件 self.resizeEvent = self.onResize def onResize(self, event): self.stack.setCurrentIndex(0) # 可能需要调整这里的index,以便于适应不同大小 ``` 在这个例子中,当窗口大小改变时,通过`onResize`方法响应resize事件,保持上方QWidget的相对位置。如果你希望在某个特定情况下,例如窗口缩小到一定程度时,让下方QWidget完全覆盖上方,可以根据屏幕尺寸动态调整stack的索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值