我有办法解决"崩溃" (汇总)QDialog
或QMainWindow
到它的标题栏?
目前的解决方案是使用:
self.setMinimumHeight(0);
self.resize(self.width(), 1);
使用0的高度即
self.resize(self.width(), 0);
导致对话框/窗口/小部件消失!
(没有show(..)hide()关闭..()或者发出的任何事件,对话框也没有被销毁,只是消失了。)
如果对话框上传到1像素,用户仍然可以手动重新调整大小,最后只有标题栏(和一些与os相关的frameborder,但内容不可见)。
有些应用程序可以在任何窗口中执行此操作,但这应该是PyQt / Pyside唯一的解决方案,它可以工作,除了那个小小的边框..
(我们的想法是基本上模仿对话框/工具的Softimages窗口汇总,以便在屏幕上以最小化(卷起)状态保留对话框,而不必将其最小化到屏幕底部。)
答案 0 :(得分:1)
您可以使用QMdiArea及其子窗口执行此操作。
from PySide import QtGui
qt_app = QtGui.QApplication([])
mdiArea = QtGui.QMdiArea()
subWin= QtGui.QMdiSubWindow(mdiArea)
subWin.setWindowTitle('Zero-height window')
mainWindow = QtGui.QMainWindow()
mainWindow.setCentralWidget(mdiArea)
mainWindow.show()
qt_app.exec_()
将QWidget
的大小调整为零会使其从屏幕上消失。这同样适用于QMdiSubWindow
,但没有任何内容它看起来完全“折叠”另一方面它也不像常规窗口一样看起来(尽管这可能因环境而异) )。此外,一旦子窗口中填充了小部件,您将需要take care of resizing it yourself。
对于这种用户界面,您可能更喜欢QDockWidget
之类的内容,但调整大小时会遇到同样的问题。
答案 1 :(得分:-1)
您可以使用固定高度阻止窗口垂直调整大小:
self.setFixedHeight(1)