【问题标题】:toggle QMainWindow WindowStaysOnTopHint flag pyside切换 QMainWindow WindowStaysOnTopHint 标志 pyside
【发布时间】:2017-01-12 20:22:01
【问题描述】:

为什么,当我将 QMainWindow 的 SetWindowFlags 切换到 WindowStaysOnTopHint 时,我的窗口会消失,更重要的是不会留在顶部?我正在使用 PySide 和 QMainWindow。

import sys
from PySide import QtGui, QtCore

class Browser(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Browser, self).__init__(parent)
        self.resize(200, 150)
        self.setWindowTitle('Assets')
        self.initUI()

    def initUI(self):

        self.mi_stay_on_top = QtGui.QAction('Stay On Top', self)
        self.mi_stay_on_top.setShortcut('Ctrl+T')
        self.mi_stay_on_top.setCheckable(True)
        self.mi_stay_on_top.triggered.connect(self.toggle_stay_on_top)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(self.mi_stay_on_top)

        grid = QtGui.QVBoxLayout()
        grid.setContentsMargins(10,10,10,10)
        self.setLayout(grid)

    def toggle_stay_on_top(self):
        if self.mi_stay_on_top.isChecked():
            # enabled
            self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
        else:
            # disable
            self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Browser()
    ex.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python pyside qmainwindow


    【解决方案1】:

    setWindowFlags 方法重置父级,从而隐藏窗口。

    所以你需要这样做:

    def toggle_stay_on_top(self):
        if self.mi_stay_on_top.isChecked():
            # enabled
            self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
        else:
            # disable
            self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)
        # re-show the window after changing flags
        self.show()
    

    【讨论】:

    • 太棒了,我想并希望这是我忽略的一些简单的事情。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多