小编Inc*_*ink的帖子

在其他窗口中使用 QApplication::activeWindow->winId() 时,QT 5.5 程序崩溃

我正在尝试实现全局热键激活时截图的功能。我将应用到我的项目中,这样我就可以轻松创建全局热键。

要使用 screen->grabWindow(),我必须获取活动窗口的 WinID。所以我找到了 QApplication::activeWindow()->winId() 然后使用它。

QScreen *screen = QGuiApplication::primaryScreen();
QPixmap screenShot = screen->grabWindow(QApplication::activeWindow()->winId(), 0, 0, -1,-1);
Run Code Online (Sandbox Code Playgroud)

然而,事情正在朝着错误的方向发展。当我在其他窗口中按下热键时,程序崩溃并显示“untitled2.exe已停止工作”。(抱歉无法放置图像[ http://ww2.sinaimg.cn/large/bcbe8e8cgw1euarn4mcb6j20vt09ojtk。 ]

我发现即使我简单地 qDebug() 也会发生同样的情况。不仅是winId(),还有windowTitle()、setWindowTitle()等。

qDebug() << QApplication::activeWindow()->winId();
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决一下吗?多谢!

c++ qt

4
推荐指数
1
解决办法
1239
查看次数

标签 统计

c++ ×1

qt ×1