如何使我的标题减少在PyQt5中可拖动的窗口?

问题描述 投票:0回答:1

我想建立一个具有无标题栏的窗口,所以我这样做。但这不再是可拖动的。你不能让我的窗户从这里移到那里。

我知道是因为我,删除了标题栏,但是如何解决?

这是我的代码:

from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QWidget
import sys


def window():
    app = QApplication(sys.argv)
    win = QMainWindow()
    win.setGeometry(300, 300, 300, 300)
    win.setWindowTitle("Test")
    win.setWindowFlags(QtCore.Qt.FramelessWindowHint)

    label = QLabel(win)
    label.setText("Hello world")

    win.show()
    sys.exit(app.exec_())


window()

任何帮助将不胜感激。请帮助我...

python python-3.x qt pyqt pyqt5
1个回答
0
投票

您需要重新实现小部件的mousePressmouseMove方法(mouseRelease在技术上不是强制性的,但实际上是保持一致性所必需的,因为释放事件必须由Qt正确地拦截以避免任何混乱)。前者将获得相对于几何图形(self.offset)的当前光标位置,而后者将通过将新位置添加到当前位置并减去偏移来计算新的“窗口”位置。

我也建议您使用QWidget而不是QMainWindow。虽然QMainWindow的实现与QWidgets的实现非常相似,但为您的目的而对QMainWindow进行子类化可能会比较困难,因为它的控件比看起来要复杂。如果您只需要QMainWindow来获取状态栏,则只需在小部件布局中添加一个新的状态栏即可。如果您还需要菜单栏,请使用setMenuBar将其添加到小部件的布局中。

setMenuBar
© www.soinside.com 2019 - 2024. All rights reserved.