如何检查小部件是否在布局中?我有一个可能包含小部件的布局.
infoClientverticalLayout_3需要检查布局中是否存在窗口小部件,然后不添加新窗口小部件.
如果不存在,请添加一个新的.
怎么做?
void MainWindow::slotPush1()
{
if <there is no infoClient> ui->verticalLayout_3->addWidget(new infoClient(this));
}
Run Code Online (Sandbox Code Playgroud)
使用QObject::findChild按名称查找子项。例如:
void MainWindow::slotPush1()
{
if (ui->verticalLayout_3->findChild<QWidget*>("infoClient")) // your code to add it here
}
Run Code Online (Sandbox Code Playgroud)
注意:findChild 是一个模板函数。如果您不熟悉模板函数,只需知道您传递了要查找的对象的类型(在您的示例中,看起来您可以使用ui->verticalLayout_3->findChild<infoClient*>("infoClient"))。如果你想找到一个 QWidget,或者任何继承自 QWidget 的东西,你可以直接使用findChild<QWidget*>(),你会很安全。
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |