我目前正在为一个应用程序创建一个 GUI,我想使其成为无框架并自己添加最小化和关闭按钮。我想要实现的目标可以在这个答案中看到:
由于我想要的 GUI 结构非常复杂,我真的需要使用 Qt Designer。有没有办法在 Qt Designer 中实现上面答案中所做的事情?
实现此目的的一种方法是像往常一样在 Qt Designer 中创建应用程序窗口,通过
uic.loadUi
在 python 中加载 .ui 文件,并将其添加到 box.contentWidget()
的布局中,而不是链接示例中的 edit
中.
在你的 UIfile.py 中
self.setWindowFlag(QtCore.Qt.WindowType.FramelessWindowHint).
此外,您必须在后端文件中创建
QSizeGrip(some_obj)
其中 some_obj 是用于扩展窗口的任何对象(框架、dutton 等),请将其写在 init() 中。
此外,您还必须在类中的后端文件中写入以下内容:
def move_window(e): # inside __init__()
"""Drag your window"""
if e.buttons() == QtCore.Qt.MouseButton.LeftButton:
try:
self.move(self.pos() + e.globalPosition().toPoint() - self.clickPosition)
self.clickPosition = e.globalPosition().toPoint()
e.accept()
except AttributeError:
pass
def mousePressEvent(self, e): # inside class
self.clickPosition = e.globalPosition().toPoint()
和
self.some_obj.mouseMoveEvent = move_window # init()
为 PySide6 编写,可改编为 PyQt