1.双击表头放大复原
1.1重写表头类
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSignal
class myQFrame(QtWidgets.QFrame):
# 自定义信号, 注意信号必须为类属性
mouseDoubleClickSignal = pyqtSignal(object)
def __init__(self, parent=None):
super(myQFrame, self).__init__(parent)
def mouseDoubleClickEvent(self, QMouseEvent):
self.mouseDoubleClickSignal.emit(self)
1.2.槽函数
# 信号槽连接显示子窗口的槽函数
self.ui.WindowWidget.mouseDoubleClickSignal.connect(self.on_maximizeRestoreAppBtn_clicked)
# 最大化与复原
def on_maximizeRestoreAppBtn_clicked(self):
if self.isMaximized():
self.showNormal()
self.ui.maximizeRestoreAppBtn.setToolTip("<html><head/><body><p>最大化</p></body></html>")
else:
self.showMaximized()
self.ui.maximizeRestoreAppBtn.setToolTip("<html><head/><body><p>恢复</p></body></html>")
1.3.生成的ui修改
2.无边框+移动
# 无边框
self.setWindowFlags(Qt.FramelessWindowHint)
# 最小化
def on_minimizeAppBtn_clicked(self):
self.ui.minimizeAppBtn.setToolTip("<html><head/><body><p>最小化</p></body></html>")
self.showMinimized()
# 最大化与复原
def on_maximizeRestoreAppBtn_clicked(self):
if self.isMaximized():
self.showNormal()
self.ui.maximizeRestoreAppBtn.setToolTip("<html><head/><body><p>最大化</p></body></html>")
else:
self.showMaximized()
self.ui.maximizeRestoreAppBtn.setToolTip("<html><head/><body><p>恢复</p></body></html>")
# 关闭程序
def on_closeAppBtn_clicked(self):
self.close()
#移动
def mouseMoveEvent(self, QMouseEvent):
if Qt.LeftButton and self.m_flag:
self.move(QMouseEvent.globalPos() - self.m_Position) # 更改窗口位置
QMouseEvent.accept()
#关闭窗口
def mouseReleaseEvent(self, QMouseEvent):
self.m_flag = False
self.setCursor(QCursor(Qt.ArrowCursor))
def mousePressEvent(self,e):
if e.buttons()== Qt.LeftButton:
if e.button() == Qt.LeftButton:
print("左键按下")
self.m_flag = True
self.m_Position = e.globalPos() - self.pos() # 获取鼠标相对窗口的位置
e.accept()
# self.setCursor(QCursor(Qt.OpenHandCursor)) # 更改鼠标图标
elif e.buttons()== Qt.RightButton:
print("右")
super(MainWindow,self).mousePressEvent(e)