我想建立一个具有无标题栏的窗口,所以我这样做。但这不再是可拖动的。你不能让我的窗户从这里移到那里。
我知道是因为我,删除了标题栏,但是如何解决?
这是我的代码:
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()
任何帮助将不胜感激。请帮助我...
您需要重新实现小部件的mousePress
和mouseMove
方法(mouseRelease在技术上不是强制性的,但实际上是保持一致性所必需的,因为释放事件必须由Qt正确地拦截以避免任何混乱)。前者将获得相对于几何图形(self.offset
)的当前光标位置,而后者将通过将新位置添加到当前位置并减去偏移来计算新的“窗口”位置。
我也建议您使用QWidget而不是QMainWindow。虽然QMainWindow的实现与QWidgets的实现非常相似,但为您的目的而对QMainWindow进行子类化可能会比较困难,因为它的控件比看起来要复杂。如果您只需要QMainWindow来获取状态栏,则只需在小部件布局中添加一个新的状态栏即可。如果您还需要菜单栏,请使用setMenuBar
将其添加到小部件的布局中。
setMenuBar