gpt4 book ai didi

python - 删除qt中gui的顶部栏

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:22 32 4
gpt4 key购买 nike

在 qt designer(最好)或 python 中,有没有办法删除标准的 Windows 顶部栏并将其替换为我自己的,或者至少对其进行格式化。这类似于 photoshop、maya、3ds max、chrome 等新版本的外观。

我找到了这两篇文章,但除了在C++中,而且我需要在python中工作,它们一直没有得到解决。

http://qt-project.org/forums/viewthread/3331/ http://qt-project.org/forums/viewthread/3847/

我从中得到的是 FramelessWindowHint,它可以做我想做的事,但正如他们在文章中提到的,它消除了很多 Windows 功能,例如调整大小。有没有办法重新引入角拖动和手动调整大小/关闭选项?

更具体地说,我已经在 qt designer 中设计了程序,并使用 pyuic4 制作了我的 python 文件。这是我加载 gui 的主要功能:

global globalMoAnWindow
app = QtGui.QApplication(sys.argv)
app.setStyle(QtGui.QStyleFactory.create('plastique'))
globalMoAnWindow = MoAnWin()
globalMoAnWindow.setWindowFlags(QtCore.Qt.FramelessWindowHint)
globalMoAnWindow.showMaximized()
sys.exit(app.exec_())

对于任何想使用 python 并拖动小部件的人,我找到了这段代码:

def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
event.accept()

def mouseMoveEvent(self, event):
if event.buttons() == QtCore.Qt.LeftButton:
self.move(event.globalPos() - self.dragPosition)
event.accept()

我放在处理主窗口的类中

最佳答案

您可以使用 QSizeGrip 将调整大小控件添加到您的窗口。它们的行为与系统行为完全一样。您应该创建一个布局并将 QSizeGrip 放在窗口的每个角落。

widget = QWidget()
widget.setWindowFlags(Qt.FramelessWindowHint)
layout = QGridLayout(widget)
layout.setContentsMargins(0, 0, 0, 0)
sizeGrip1 = QSizeGrip(widget)
sizeGrip2 = QSizeGrip(widget)
sizeGrip3 = QSizeGrip(widget)
sizeGrip4 = QSizeGrip(widget)
layout.addWidget(sizeGrip1, 0, 0)
layout.addWidget(sizeGrip2, 0, 2)
layout.addWidget(sizeGrip3, 2, 2)
layout.addWidget(sizeGrip4, 2, 0)
label = QLabel("Contents")
layout.addWidget(label, 1, 1)

widget.show()

QMainWindow 的变体:

window = QMainWindow()
widget = QWidget()
window.setCentralWidget(widget)
window.setWindowFlags(Qt.FramelessWindowHint)
layout = QGridLayout(widget)
#...
window.show()

实现关闭按钮很简单。只需将 QPushButton 或 QToolButton 添加到您的布局并在其 onclick 处理程序中调用 QWidget::close

拖动更加复杂,因为没有标准的小部件可以执行此操作。 this answer 中描述了一种解决方案.

关于python - 删除qt中gui的顶部栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016273/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com