Qt 在顶层窗口里搜索名称包含某个字符串的窗口,获取其窗口句柄 的代码
时间: 2023-12-06 07:45:46 浏览: 94
windows下qt获取所有桌面窗口句柄、类名和标题
5星 · 资源好评率100%
可以使用Qt的QDesktopWidget类和QApplication类来搜索顶层窗口,然后使用QWindow类的winId()函数获取窗口句柄,具体代码如下:
```cpp
#include <QApplication>
#include <QDesktopWidget>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString searchString = "Example"; // 搜索字符串
QList<QWidget *> widgets = QApplication::topLevelWidgets(); // 获取所有顶层窗口
for (int i = 0; i < widgets.count(); ++i) {
if (widgets.at(i)->objectName().contains(searchString)) { // 根据名称搜索窗口
WId windowId = widgets.at(i)->window()->winId(); // 获取窗口句柄
qDebug() << "Window name:" << widgets.at(i)->objectName() << ", Window ID:" << windowId;
}
}
return a.exec();
}
```
这个代码会搜索所有顶层窗口的名称是否包含搜索字符串,如果包含则获取窗口句柄并输出。注意,这里获取的窗口句柄是WId类型,可以使用QWindow::fromWinId()函数将其转换为QWindow类型。
阅读全文