折叠(汇总)到标题栏(1像素问题)

时间:2015-01-22 03:04:36

标签: python qt dialog pyqt pyside

我有办法解决"崩溃" (汇总)QDialogQMainWindow到它的标题栏?

目前的解决方案是使用:

self.setMinimumHeight(0);
self.resize(self.width(), 1);

使用0的高度即 self.resize(self.width(), 0);

导致对话框/窗口/小部件消失!

(没有show(..)hide()关闭..()或者发出的任何事件,对话框也没有被销毁,只是消失了。)

如果对话框上传到1像素,用户仍然可以手动重新调整大小,最后只有标题栏(和一些与os相关的frameborder,但内容不可见)。

有些应用程序可以在任何窗口中执行此操作,但这应该是PyQt / Pyside唯一的解决方案,它可以工作,除了那个小小的边框..

(我们的想法是基本上模仿对话框/工具的Softimages窗口汇总,以便在屏幕上以最小化(卷起)状态保留对话框,而不必将其最小化到屏幕底部。)

2 个答案:

答案 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_()

Screenshot with PySide in Windows 7

QWidget的大小调整为零会使其从屏幕上消失。这同样适用于QMdiSubWindow,但没有任何内容它看起来完全“折叠”另一方面它也不像常规窗口一样看起来(尽管这可能因环境而异) )。此外,一旦子窗口中填充了小部件,您将需要take care of resizing it yourself

对于这种用户界面,您可能更喜欢QDockWidget之类的内容,但调整大小时会遇到同样的问题。

答案 1 :(得分:-1)

您可以使用固定高度阻止窗口垂直调整大小:

    self.setFixedHeight(1)