如何获取已覆盖的小部件的QPixmap?

时间:2014-07-07 21:31:29

标签: c++ qt qt4

我正在尝试抓取窗口小部件的QPixmap,但是窗口小部件被重叠了。它曾经工作,直到我切换图形卡。有问题的代码是:

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

取景器小部件是QCameraViewfinder。 Qt4在Archlinux上的小部件应用程序。有没有办法禁用特定小部件上的重叠或捕获它?尝试使用ksnapshot捕获它。

1 个答案:

答案 0 :(得分:1)

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

QPixmap :: grabWindow即使覆盖了硬件,也会抓取小部件。我从ksnapshot源代码中挖出了信息。

所以示例代码将是:

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