如何设置QDockWidget只使用QMainWindow的右下角

时间:2010-08-12 16:55:43

标签: qt

我想要的是如下图所示。 alt text

感谢。

4 个答案:

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