Python 切换程序时,如何使未连接的QDockWidget保持可见?
我在一个Qmain窗口中有几个QdockWidget。当我解开一个窗口并切换到另一个程序时,解开的小部件就会消失。切换程序时,如何使未连接的QDockWidget可见或保持可见 所以,我发现以下几行Python 切换程序时,如何使未连接的QDockWidget保持可见?,python,qt,pyqt,pyqt5,Python,Qt,Pyqt,Pyqt5,我在一个Qmain窗口中有几个QdockWidget。当我解开一个窗口并切换到另一个程序时,解开的小部件就会消失。切换程序时,如何使未连接的QDockWidget可见或保持可见 所以,我发现以下几行 super(MainProgram, self).__init__(parent,Qt.WindowStaysOnTopHint) 确保整个程序始终处于最佳状态。但是,未锁定的小部件仍然会消失。即使我在qdockwidget代码中放入以下行: self.Risk_Monitor.setWindow
super(MainProgram, self).__init__(parent,Qt.WindowStaysOnTopHint)
确保整个程序始终处于最佳状态。但是,未锁定的小部件仍然会消失。即使我在qdockwidget代码中放入以下行:
self.Risk_Monitor.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
当然也可以让浮动小部件保持在顶部,对吗
以下几点似乎不起作用:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Dockdemo(QMainWindow):
def __init__(self, parent=None):
super(Dockdemo, self).__init__(parent,Qt.WindowStaysOnTopHint)
self.setWindowTitle("Dock demo")
self.setCentralWidget(QTextEdit())
items = QDockWidget("Stay on Top!", self, flags=Qt.Window)
#items = QDockWidget("Dockable", self, flags=Qt.WindowStaysOnTopHint) # flags=Qt.Window
# items.setGeometry(650, 130, 300, 200)
items.show() # +++
listWidget = QListWidget()
listWidget.addItem("item1")
listWidget.addItem("item2")
listWidget.addItem("item3")
items.setWidget(listWidget)
items.setFloating(False)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Dockdemo()
ex.show()
sys.exit(app.exec_())
*已解决:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Dockdemo(QMainWindow):
def __init__(self, parent=None):
super(Dockdemo, self).__init__(parent,Qt.WindowStaysOnTopHint)
self.setWindowTitle("Dock demo")
self.setCentralWidget(QTextEdit())
items = QDockWidget("Dockable", self) # flags=Qt.Window
#items.setWindowFlags(Qt.WindowStaysOnTopHint)
# items.setGeometry(650, 130, 300, 200)
items.setWindowFlags(
Qt.Window |
Qt.CustomizeWindowHint |
Qt.WindowTitleHint |
Qt.WindowCloseButtonHint |
Qt.WindowStaysOnTopHint
)
items.show()
# items.raise_()
listWidget = QListWidget()
listWidget.addItem("item1")
listWidget.addItem("item2")
listWidget.addItem("item3")
items.setWidget(listWidget)
items.setFloating(False)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Dockdemo()
ex.show()
sys.exit(app.exec_())
请注意,这只适用于Windows,不能移植到其他操作系统。@Jens,这不是真的;我在OSX上,它工作正常。