如何去除QMainWindow和mdiArea之间的空白(边距)?

9
我有一个QMainWindow,并在主窗口中插入了mdiArea
您必须先查看以下图像:

如您所见,灰色区域是mdiArea,而主窗口和mdiArea之间的空白区域(边距)是我想要去掉的。
我已经使用了setContentsMargins函数,但没有任何作用。 如何删除这些空格?

我希望它像以下图像一样: enter image description here
1个回答

21

QMainWindow有一个具有布局的中央窗口部件。您在QMainWindow上使用的布局应该用于其中央窗口部件上。因此,您需要首先调用

QWidget* QMainWindow::centralWidget()

以便首先获取中央窗口部件,然后使用

void QLayout::setContentsMargins(int left, int top, int right, int bottom)

调整其布局。下面的图表来自Qt的文档。

enter image description here enter image description here

创建一个没有中央窗口部件的主窗口不受支持。即使只是一个占位符,您也必须拥有中央窗口部件。


例如,您可以在QMainWindow的构造函数中使用以下内容:

centralWidget()->layout()->setContentsMargins(0, 0, 0, 0);
statusBar()->hide();
ui->mainToolBar->hide();

enter image description here

为尽可能减少空白空间状态栏工具栏已被隐藏。


我已经在MainWindow的构造函数中编写了这段代码。但不幸的是,仍然无法去除空格。 - Lion King
@LionKing 你说的“不想去掉空格”是什么意思?这不是你想要的吗? - Tay2510
@LionKing 好的,我已经编辑了我的帖子,需要先调用centralWidget并获取它的布局。 - Tay2510
是的,就是这样。但是你能解释一下“中央窗口部件”是什么意思吗? - Lion King
@LionKing 这是QMainWindow的基本小部件,我会在一分钟内更新帖子并提供详细信息。 - Tay2510

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接