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

Posted

技术标签:

【中文标题】如何在使用网格布局并将重叠小部件定位到距窗口边框特定距离时重叠 qwidgets?【英文标题】:How can I overlap qwidgets while using the grid layout and positioning overlapping widgets a particular distance from the window border? 【发布时间】:2015-04-02 12:40:38 【问题描述】:

我正在编写一个游戏,我有一个占据大部分窗口的选项卡小部件。我想将标签栏中的额外空间用于按钮。我在网格布局中有标签小部件。为此,我使用下面的代码来删除按钮小部件并将其添加回所需区域(其他人问题的解决方案)。

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 框架对象。

这是我窗户的一些照片。 https://docs.google.com/document/d/17w5USWQcCtb6OdcRShdcYcRjXTcdVpmdrG5TWLX71y8/edit?usp=sharing

【问题讨论】:

我不明白。为什么要从布局中删除内容并将其添加回同一布局? 没有办法让它们在编辑器中重叠。这就是为什么我在编辑器中创建它们然后改变它们的位置。 您可以在设计器中创建它们而不将它们添加到布局中。您也可以在设计器中创建一个水平布局,将按钮放在该布局内,然后将该布局添加到网格布局中。 这将不允许按钮像我想要的那样与栏标签重叠。 【参考方案1】:

您正在使用void QGridLayout::addWidget(QWidget * widget, int row, int column, Qt::Alignment alignment = 0) 重载。 第二和第三参数是网格的行和列。并且您将 2 个小部件放在同一个单元格中,因此它们相互重叠。

【讨论】:

我注意到了;但如果我使用任何其他列值,按钮小部件将位于选项卡小部件的额外栏空间之外。 我将在原帖中添加一个链接,并附上图片进行演示。【参考方案2】:

我解决了我的问题。早些时候,当我尝试将它们添加到框架并重新定位它时,我只能使用小部件作为按钮的容器,让我可以像之前尝试单独放置按钮一样放置它们。

【讨论】:

以上是关于如何在使用网格布局并将重叠小部件定位到距窗口边框特定距离时重叠 qwidgets?的主要内容,如果未能解决你的问题,请参考以下文章

【PyQt】网格布局 QGridLayout

Qt Designer 使小部件在布局中与另一个小部件重叠

QT gui 项目不会缩小到其父小部件的 ft

如何在 PyQt5 中为 QGridLayout 添加拉伸?

Python - 使用网格布局格式化窗口

如何在 PyQt 中使用网格定位?