#include <QWidget> #include <QApplication> void Form::on_pushButton_clicked() { auto windows = qApp->allWindows(); for (auto window : windows) { auto qwidget = dynamic_cast<QWidget*>(window); if (qwidget && qwidget->winId()) { qDebug() << "Window Title: " << qwidget->windowTitle(); } } }为啥没有输出
时间: 2024-03-12 14:45:22 浏览: 440
如果您的代码没有输出窗口标题,请检查以下几个方面:
1. 您的应用程序中是否有任何窗口正在显示?如果没有任何窗口正在显示,那么 `qApp->allWindows()` 返回的窗口列表将为空。
2. 您的窗口是否设置了标题?如果窗口没有设置标题,则输出的标题将是空字符串。
3. 您的应用程序是否正确初始化?在使用 `QApplication::allWindows()` 函数之前,必须先创建 `QApplication` 对象并调用 `exec()` 函数启动应用程序事件循环。
为了进一步诊断问题,您可以添加一些调试输出。例如,您可以在 `on_pushButton_clicked()` 函数中添加以下调试输出:
```cpp
void Form::on_pushButton_clicked()
{
auto windows = qApp->allWindows();
qDebug() << "Number of Windows: " << windows.count();
for (auto window : windows)
{
auto qwidget = dynamic_cast<QWidget*>(window);
if (qwidget && qwidget->winId())
{
qDebug() << "Window Title: " << qwidget->windowTitle();
}
else
{
qDebug() << "Invalid Window Pointer";
}
}
}
```
在这个示例中,我们添加了调试输出来输出窗口的数量以及窗口标题。如果窗口标题为空,则输出 `Invalid Window Pointer`,以指示窗口指针无效。
如果您仍然无法解决问题,请提供更多的代码和上下文信息,以便我可以更好地帮助您。
阅读全文