我需要将按钮放置在其上方 frame
,使其不在其中,而是在其顶部(覆盖)(出于个人原因,当我填充frame
其中的所有元素时,无法显示)。
在当前版本的代码中,按钮位于 内部frame
,我需要相同的实现,但位于frame
. 如何实施?
如果问题更简单:如何将按钮放置在frame
? 或如何将元素放置在元素之上?
我的代码:
import sys
from PySide6 import QtWidgets
from PySide6.QtCore import (QCoreApplication, QMetaObject, QSize)
from PySide6.QtWidgets import (QFormLayout, QFrame, QGridLayout,
QMainWindow, QPushButton, QSizePolicy, QSpacerItem,
QWidget)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(808, 510)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
self.frame = QFrame(self.centralwidget)
self.frame.setObjectName(u"frame")
self.frame.setFrameShape(QFrame.StyledPanel)
self.frame.setFrameShadow(QFrame.Raised)
self.formLayout = QFormLayout(self.frame)
self.formLayout.setObjectName(u"formLayout")
self.pushButton = QPushButton(self.frame)
self.pushButton.setObjectName(u"pushButton")
self.pushButton.setMinimumSize(QSize(50, 30))
self.pushButton.setMaximumSize(QSize(16777214, 16777215))
self.pushButton.setStyleSheet(u"background-color: rgba(33, 33, 33, 0.7);\n"
"color: #bfbfbf;\n"
"")
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.pushButton)
self.verticalSpacer = QSpacerItem(20, 250, QSizePolicy.Minimum, QSizePolicy.Fixed)
self.formLayout.setItem(0, QFormLayout.LabelRole, self.verticalSpacer)
self.gridLayout.addWidget(self.frame, 1, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.pushButton.setText(QCoreApplication.translate("MainWindow", u"Test", None))
# retranslateUi
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setMouseTracking(True)
self.setupUi(self)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
sys.exit(app.exec_())
如果我理解正确,那么实际上一切都很简单,在 widget
B
之上绘制一个小部件,使小部件成为小部件A
的父级,仅此而已。B
A
头3.png