Qt 得到不限于程序中所有运行的窗口
时间: 2024-03-12 20:46:01 浏览: 187
您可以使用 `QApplication::allWindows()` 方法来获取所有运行的窗口。这个方法返回一个 `QList<QWindow *>` 类型的列表,其中包含了所有应用程序中的窗口,包括主窗口、对话框、提示框等等。
以下是一个示例,演示如何使用 `QApplication::allWindows()` 方法来获取所有窗口的标题:
```cpp
auto windows = qApp->allWindows();
for (auto window : windows) {
qDebug() << "Window Title: " << window->title();
}
```
在这个示例中,我们使用 `qApp` 全局指针来获取当前应用程序实例。然后,调用 `allWindows()` 方法来获取所有窗口。最后,我们遍历窗口列表,使用 `title()` 方法来获取每个窗口的标题,并将其输出到调试控制台。
请注意,`QApplication::allWindows()` 方法返回的窗口列表包括所有类型的窗口,包括 `QWidget`、`QDialog`、`QMessageBox`、`QToolTip` 等等。如果您只需要获取 `QWidget` 类型的窗口,可以使用 `QWidget::find()` 方法来递归查找所有 `QWidget` 类型的子控件,例如:
```cpp
auto widgets = qFindChildren<QWidget*>(qApp);
for (auto widget : widgets) {
qDebug() << "Widget Title: " << widget->windowTitle();
}
```
在这个示例中,我们使用 `qFindChildren<QWidget*>()` 方法来递归查找所有 `QWidget` 类型的子控件。然后,我们遍历 `QWidget` 控件列表,使用 `windowTitle()` 方法来获取每个控件的窗口标题,并将其输出到调试控制台。
阅读全文