#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 12:45:17 浏览: 51
如果您的代码没有输出窗口标题,有几个可能的原因:
1. 您的应用程序中没有任何窗口。请确保应用程序正在显示至少一个窗口。
2. 您的应用程序没有正确初始化。请确保在使用 `QApplication::allWindows()` 函数之前正确初始化了 `QApplication` 对象。
3. 您的窗口没有设置标题。在这种情况下,输出的标题将是空字符串。
4. 您的窗口已经被销毁。在这种情况下,窗口标题将不再可用。
为了诊断问题,您可以添加一些调试输出,以便确定应用程序是否成功初始化,并且窗口是否设置了标题。例如,您可以在 `on_pushButton_clicked()` 函数中添加以下代码:
```cpp
void Form::on_pushButton_clicked()
{
qDebug() << "Number of Windows: " << qApp->allWindows().count();
auto windows = qApp->allWindows();
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`,以指示窗口指针无效。
如果您仍然无法解决问题,请提供更多的代码和上下文信息,以便我可以更好地帮助您。
阅读全文