C++ 如何在移除QGridLayout的一个小部件后将其设置在特定位置
我正在使用C++ 如何在移除QGridLayout的一个小部件后将其设置在特定位置,c++,qt,qgridlayout,C++,Qt,Qgridlayout,我正在使用QGridLayout添加一个QPushButton和一个QTextEdit。但是每当我隐藏和删除QTextEdit小部件时,QPushButton就会出现在QTextEdit的位置上 最初,QPushButton处于位置,比如说(0,0)和QTextEdit处于位置(100,0)。然后,在移除QTextEdit时,QPushButton会出现在QTextEdit位置,即在(100,0)位置 按delete键时,我正在删除QTextWidget: layout->removeWi
QGridLayout
添加一个QPushButton
和一个QTextEdit
。但是每当我隐藏和删除QTextEdit小部件时,QPushButton
就会出现在QTextEdit
的位置上
最初,QPushButton
处于位置,比如说(0,0)
和QTextEdit
处于位置(100,0)
。然后,在移除QTextEdit时,QPushButton
会出现在QTextEdit
位置,即在(100,0)
位置
按delete键时,我正在删除QTextWidget:
layout->removeWidget(text1);
因此,我认为我必须设置QGridLayout
的位置,以便每次移除widget
后,它都应该处于正确的位置
根据您的屏幕截图,当您删除QTextWidget
时,该列似乎已被完全删除。您可以尝试将QTextWidget
的可见性设置为false,而不是将其删除
text1->setVisible( false );
尽管基于此,但可能会产生相同的结果
或者,当您删除QTextEdit
时,将其替换为,以使列不会完全删除
如果这仍然不起作用,我接下来会尝试将QPushButton
的对齐方式更改为Qt::AlignLeft
layout->addWidget(button1,0,0,1,1, Qt::AlignLeft);
如果您对此不满意,我会尝试使用a而不是QGridLayout
水平布局项目。或者您可以始终在QGridLayout
的第一行/列中使用QHBoxLayout
,这最终取决于您未来的用例
例如:
QHBoxLayout* hLayout = new QHBoxLayout();
hLayout->addWidget( button1, 0, Qt::AlignLeft );
hLayout->addWidget( text1, 0, Qt::AlignLeft );
qGridLayout->addLayout ( hLayout, 0, 0, Qt::AlignLeft );
同样,使用QHBoxLayout
和QGridLayout
(可能不再需要使用网格),您可能需要使用对齐来获得所需的结果。类似的方法可能会奏效如果可以发布一个屏幕截图,这可能有助于更清楚地看到问题。@Rupesh根据您的屏幕截图更新了我的答案,希望这有助于为您指明正确的方向。
QHBoxLayout* hLayout = new QHBoxLayout();
hLayout->addWidget( button1, 0, Qt::AlignLeft );
hLayout->addWidget( text1, 0, Qt::AlignLeft );
qGridLayout->addLayout ( hLayout, 0, 0, Qt::AlignLeft );