gpt4 book ai didi

c++ - 删除其中一个小部件后如何在特定位置设置 QGridLayout

转载 作者:行者123 更新时间:2023-11-30 04:08:59 25 4
gpt4 key购买 nike

我正在使用 QGridLayout 添加一个 QPushButton 和一个 QTextEdit。但每当我隐藏和删除 QTextEdit 小部件 时,QPushButton 就会出现在 QTextEdit 的位置。

最初 QPushButton 位于 (0,0) 位置,QTextEdit 位于 (100,0)。然后在删除 QTextEdit QPushButton 时出现在 QTextEdit 位置,即在位置 (100,0)

layout->addWidget(button1,0,0,1,1, Qt::AlignCenter);
layout->addWidget(text1,0,1,1,1);

按删除键我正在删除 QTextWidget:

layout->removeWidget(text1);

所以我认为我必须设置 QGridLayout 的位置,以便每次删除 widget 后它都应该在正确的位置。

enter image description here enter image description here

最佳答案

根据您的屏幕截图,当您删除 QTextWidget 时,该列似乎已完全删除。您可以尝试将 QTextWidget 的可见性设置为 false 而不是将其删除。

text1->setVisible( false );

尽管基于 QGridLayout doc这可能有相同的结果。

或者,当您删除 QTextEdit 时,将其替换为 QSpacerItem因此该列并未完全删除。

如果这仍然不起作用,接下来我会尝试将 QPushButton 的对齐方式更改为 Qt::AlignLeft

layout->addWidget(button1,0,0,1,1, Qt::AlignLeft);

如果您对此不满意,我会尝试使用 QHBoxLayout而不是 QGridLayout 水平布局项目。或者您始终可以在 QGridLayout 的第一行/列中使用 QHBoxLayout,这最终取决于您 future 的用例。

例如:

QHBoxLayout* hLayout = new QHBoxLayout();
hLayout->addWidget( button1, 0, Qt::AlignLeft );
hLayout->addWidget( text1, 0, Qt::AlignLeft );
qGridLayout->addLayout ( hLayout, 0, 0, Qt::AlignLeft );

再次使用 QHBoxLayoutQGridLayout(可能不再需要使用网格),您可能需要调整对齐方式以获得您想要的结果。这样的事情可能会奏效

关于c++ - 删除其中一个小部件后如何在特定位置设置 QGridLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com