我想要的是如下图所示。
感谢。
答案 0 :(得分:1)
使用QMdiArea作为MainWindow的中心窗口小部件。然后你可以放置你的小部件的任何位置,它只需要子类QMdiSubWindow。相信我这是更好的选择。我正在尝试和你一样的事情,并使用QMdiArea和QMdiSubWindow结束。它对我很有用。
答案 1 :(得分:0)
也许您应该使用void setAllowedAreas ( Qt::DockWidgetAreas areas )
在构建停靠小部件后设置允许的区域(并将其父级设置为它将停靠的窗口)。这些枚举值来自http://doc.qt.io/qt-5/qt.html#DockWidgetArea-enum 。只是结合这些。
Constant Value
Qt::LeftDockWidgetArea 0x1
Qt::RightDockWidgetArea 0x2
Qt::TopDockWidgetArea 0x4
Qt::BottomDockWidgetArea 0x8
Qt::AllDockWidgetAreas DockWidgetArea_Mask
Qt::NoDockWidgetArea 0
答案 2 :(得分:0)
如果你想让图中的“QDockWidget”浮动,也就是说可能会掩盖其他小部件,那么我要做的就是不要把它变成QDockWidget。只需继承QWidget,将其父级设置为主窗口,但不要将其添加到任何布局。然后你可以用setPos明确设置它的位置(你可能需要在主窗口的resize事件中更新它)。我不确定这是否会起作用,因为QWidgets没有z值,所以它可能仍然在某些下面。如果您在主窗口中使用QGraphicsView,则可以确保它始终位于顶部。然后,您必须为所有小部件使用代理图形项。
长话短说,这可能但不自然。
答案 3 :(得分:0)
我使用pyqt5
self.map = QtWidgets.QDockWidget(self)
self.map = setGeometry(self.width() - 300, self.height() - 300, 300, 300)