C++ 如何获取';s hw覆盖?

C++ 如何获取';s hw覆盖?,c++,qt,qt4,C++,Qt,Qt4,我试图获取一个小部件的QPixmap,但该小部件是硬件覆盖的。在我换了显卡之前,它一直是有效的。有关守则是: ... QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); ui->viewFinder->grab().save(&buffer, "JPG"); ... 取景器小部件是一个QCameraViewfinder。Archlinux上的Qt4小部件应用程序。是否有任何方法

我试图获取一个小部件的QPixmap,但该小部件是硬件覆盖的。在我换了显卡之前,它一直是有效的。有关守则是:

...
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
ui->viewFinder->grab().save(&buffer, "JPG");
...

取景器小部件是一个QCameraViewfinder。Archlinux上的Qt4小部件应用程序。是否有任何方法可以禁用特定小部件上的覆盖,或捕获它?尝试用ksnapshot捕捉它是有效的。

显然,我不得不问一个问题来解决这个问题

即使小部件是硬件覆盖的,grabWindow也会抓取它。我从ksnapshot源代码中找到了信息

因此,示例代码为:

QPixmap::grabWindow(ui->viewFinder->winId(), 0, 0, -1, -1).save(&buffer, "JPG");