![](/img/trans.png)
[英]How to remove Qt layout from between two other layouts in Qt Creator's UI designer?
[英]Qt remove Layout from other Layout
您到底想实现什么? 如果要显示/隐藏现在位于layout_newInfo中的窗口小部件,请不要使用布局。 使用放置在layout_main(垂直布局)中的窗口小部件,它本身具有newInfo项目和布局,然后根据需要在该窗口小部件上使用setVisible(true / false)。
给定layout_newInfo嵌套到layout_main,如何在运行时从layout_main删除layout_newInfo?
语义上更清晰的方法:
layout_main->removeItem(layout_newInfo); // make sure layout_newInfo object deleted
// after either by parent or somehow else
顺便说一句,通常这也应该执行相同的嵌套布局删除操作:
delete layout_newInfo; // also removes it from upper layout
layout_main->update(); // triggers update on the screen
因此,仅在没有触发其他更新的情况下,仅在某些时候需要layout_main->update()
调用的情况下,仅代码示例的2行就足够了。
这里的示例显示删除QLayoutItem
的父项QLayout
将其从上部布局结构中删除(其析构函数也将其删除)。
最后找到答案的最佳方法是制作void方法,例如void showNewInfo(QString action);
在类cpp文件中
void MainWind::showNewInfo(QString action)
{
if(action == "true")
{
bt_search->setEnabled(false);
bt_production->setEnabled(false);
bt_drying->setEnabled(false);
bt_storage->setEnabled(false);
ln_spent->show();
cb_thickness1->show();
cb_thickness2->show();
cb_thickness3->show();
cb_EFL1->show();
cb_EFL2->show();
bt_newItem->show();
}
else if(action == "false")
{
bt_search->setEnabled(true);
bt_production->setEnabled(true);
bt_drying->setEnabled(true);
bt_storage->setEnabled(true);
ln_spent->hide();
cb_thickness1->hide();
cb_thickness2->hide();
cb_thickness3->hide();
cb_EFL1->hide();
cb_EFL2->hide();
bt_newItem->hide();
}
}
也可以使用setText(“”),因此下次显示片段时,将很清楚;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.