C++ 在使用网格布局并将重叠的小部件放置在距窗口边框特定距离的位置时,如何重叠qwidgets?

C++ 在使用网格布局并将重叠的小部件放置在距窗口边框特定距离的位置时,如何重叠qwidgets?,c++,qt,C++,Qt,我正在编写一个游戏,我有一个tab小部件,它占据了窗口的大部分。我想在选项卡栏中为按钮使用额外的空间。我有一个网格布局中的选项卡小部件。为了实现这一点,我使用下面的代码删除按钮小部件并将其添加回所需的区域,以解决其他人的问题 ui->centralLayout->removeWidget(ui->exitButton); ui->centralLayout->removeWidget(ui->ResizeButton); ui->centralLayou

我正在编写一个游戏,我有一个tab小部件,它占据了窗口的大部分。我想在选项卡栏中为按钮使用额外的空间。我有一个网格布局中的选项卡小部件。为了实现这一点,我使用下面的代码删除按钮小部件并将其添加回所需的区域,以解决其他人的问题

ui->centralLayout->removeWidget(ui->exitButton);
ui->centralLayout->removeWidget(ui->ResizeButton);
ui->centralLayout->addWidget(ui->ResizeButton,0,4, Qt::AlignTop|Qt::AlignRight);
ui->centralLayout->addWidget(ui->exitButton,0,4, Qt::AlignTop|Qt::AlignRight);
这对我不起作用;但是,因为我希望第二个小部件——调整大小按钮——正好位于退出按钮的左侧。发生的情况是,它与退出按钮重叠。我只需要将其向左移动21像素,但不知道如何移动

我试着把两个按钮都放在一个框架中,然后像我做按钮那样移除和添加框架。不幸的是,对于qt frame对象,我使用的相同函数并不存在

这是我窗户的一些照片。

您正在使用void QGridLayout::addWidgetQWidget*小部件,int行,int列,Qt::Alignment Alignment=0重载。
第二和第三个参数是网格的行和列。您将两个小部件放在同一单元格中,使它们相互重叠。

我解决了我的问题。早些时候,当我试图将它们添加到一个框架中并重新定位时,我不得不使用一个小部件作为按钮的容器,让我按照先前尝试单独放置按钮的方式来放置它们。

我不明白。为什么要从版面中删除内容并将其添加回同一版面?在编辑器中无法使它们重叠。这就是为什么我在编辑器中创建它们,然后更改它们的位置。您可以在设计器中创建它们,而无需将它们添加到布局中。您也可以在设计器中创建一个水平布局,将按钮放在该布局中,然后将该布局添加到网格布局中。这将不允许按钮像我所希望的那样重叠栏选项卡;但是,如果我使用任何其他列值,按钮小部件将在选项卡小部件的额外栏空间之外。我将添加一个到原始帖子的链接,并用图像进行演示。