maya 自定义窗口置于顶部和不置顶对比以及窗口透明

10 篇文章 2 订阅
8 篇文章 0 订阅
#第一种方法
from PySide2 import QtGui,QtWidgets,QtCore
class OptionWidget(QtWidgets.QWidget):
    closed = QtCore.Signal()

    def __init__(self, *args, **kwargs):
        super(OptionWidget, self).__init__(*args, **kwargs)

        mainLayout =QtWidgets.QVBoxLayout(self)

        button = QtWidgets.QPushButton('Close', self)
        button.clicked.connect(self.__close)
        mainLayout.addWidget(button)
        mainLayout.addStretch(True)


    def __close(self):
        self.closed.emit()

class DraggableWindow(mayaMixin.MayaQWidgetBaseMixin,QtWidgets.QMainWindow):
    def __init__(self, *args, **kwargs):
        super(DraggableWindow, self).__init__(*args, **kwargs)
        #self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        optionWidget = OptionWidget(self)
        optionWidget.closed.connect(self.close)
        self.setCentralWidget(optionWidget)

        statusBar = self.statusBar()

        self.__isDrag = False
        self.__startPos = QtCore.QPoint(0, 0)
        self.resize(200,100)
        self.move(300,300)


    def mousePressEvent(self, event):
        self.__isDrag = True
        self.__startPos = event.pos()
        super(DraggableWindow, self).mousePressEvent(event)

    def mouseReleaseEvent(self, event):
        self.__isDrag = False
        super(DraggableWindow, self).mouseReleaseEvent(event)

    def mouseMoveEvent(self, event):
        if self.__isDrag:
            self.move(self.mapToParent(event.pos() - self.__startPos))
        super(DraggableWindow, self).mouseMoveEvent(event)


window = DraggableWindow()
window.show()

#第二种方法
from PySide2 import QtGui,QtWidgets,QtCore

class OptionWidget(QtWidgets.QWidget):
    closed = QtCore.Signal()

    def __init__(self, parent=None):
        super(OptionWidget, self).__init__(parent)

        mainLayout =QtWidgets.QVBoxLayout(self)

        button = QtWidgets.QPushButton('Close', self)
        button.clicked.connect(self.__close)
        mainLayout.addWidget(button)
        mainLayout.addStretch(True)


    def __close(self):
        self.closed.emit()

class DraggableWindow(QtWidgets.QMainWindow):
    parentUI=QtWidgets.QApplication.activeWindow()
    def __init__(self, parent=parentUI):
        super(DraggableWindow, self).__init__(parent)
        #self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        optionWidget = OptionWidget(self)
        optionWidget.closed.connect(self.close)
        self.setCentralWidget(optionWidget)

        statusBar = self.statusBar()

        self.__isDrag = False
        self.__startPos = QtCore.QPoint(0, 0)
        self.resize(200,100)
        self.move(300,300)


    def mousePressEvent(self, event):
        self.__isDrag = True
        self.__startPos = event.pos()
        super(DraggableWindow, self).mousePressEvent(event)

    def mouseReleaseEvent(self, event):
        self.__isDrag = False
        super(DraggableWindow, self).mouseReleaseEvent(event)

    def mouseMoveEvent(self, event):
        if self.__isDrag:
            self.move(self.mapToParent(event.pos() - self.__startPos))
        super(DraggableWindow, self).mouseMoveEvent(event)


window = DraggableWindow()
window.show()

这里写图片描述

如果自定义窗口不置顶,当对其他的窗口操作时,自定义窗口就会置于底部,
之后,再次使用还要手动调出来,非常不方便。
使用这两种方法就可以解决这个问题。

其中,#self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

这句话是设置窗口透明的,因为影响截图,所以注释了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值