qt mdiarea 先addsubwindow 然后findchild(QString) 但是找不到QMdiSubWindow
时间: 2024-01-14 16:04:58 浏览: 135
可能的原因是您没有指定要查找的 QWidget 的父对象。您可以尝试使用以下代码:
```
QMdiSubWindow *subWindow = ui->mdiArea->addSubWindow(widget);
subWindow->setObjectName("MySubWindow");
```
然后,您可以使用以下代码来查找 QMdiSubWindow:
```
QMdiSubWindow *foundSubWindow = ui->mdiArea->findChild<QMdiSubWindow*>("MySubWindow");
if (foundSubWindow != nullptr) {
// 找到了 QMdiSubWindow
}
else {
// 没有找到 QMdiSubWindow
}
```
请确保在查找时使用正确的字符串名称。
相关问题
qt mdiarea findchild
您可以使用`QMdiArea`类的`findChild()`方法来查找指定名称、类型和标志的子对象。例如,如果您想查找一个名为"myChildWidget"的`QWidget`子对象,可以使用以下代码:
```cpp
QWidget *childWidget = mdiArea->findChild<QWidget*>("myChildWidget");
```
其中,`mdiArea`是您的`QMdiArea`对象的指针。您还可以使用其他重载版本的`findChild()`方法来查找不同类型的子对象。请注意,如果未找到指定的子对象,则返回`nullptr`。
qt findchild怎么使用
Qt中的`findChild`是一个非常有用的函数,它用于在父对象的子对象中查找具有特定名称或类类型的单个对象。这对于动态获取界面元素非常有用,特别是当界面元素较多且在运行时无法直接通过代码访问时。`findChild`函数的原型如下:
```cpp
QObject *findChild(const QString &name, const QString &type = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const;
```
其中参数说明如下:
- `const QString &name`:指定子对象的名称。
- `const QString &type`:指定子对象的类型名称,这可以是一个类名,如 `"QPushButton"`。
- `Qt::FindChildOptions options`:指定查找选项,默认为递归查找所有子对象。
例如,如果你有一个名为`myWidget`的`QWidget`对象,并且你想查找它的名为`pushButton`的子对象,你可以使用以下代码:
```cpp
QPushButton *button = myWidget.findChild<QPushButton*>("pushButton");
```
如果找到了对应的子对象,`findChild`会返回一个指向该对象的指针,如果没有找到,则返回`nullptr`。
使用`findChild`时需要注意的是,它会抛出一个异常,如果启用了异常处理,因此你需要确保处理这种情况。
阅读全文