从应用程序内的qt应用程序的屏幕截图

问题描述:

我正尝试在应用程序中捕获我的应用程序的屏幕截图。它是一个基于Qt的应用程序。有谁知道如何做到这一点?任何建议都非常受欢迎。从应用程序内的qt应用程序的屏幕截图

CV

+0

我们必须更深入! – 2012-02-07 08:37:55

+0

@Kamil Klimek:QCeption – Exa 2012-02-07 08:53:16

+0

“在应用程序中捕获我的应用程序的屏幕截图” - 无法抗拒! – 2012-02-07 08:55:38

你可以告诉任何QWidget(包括您QMainWindow)来表现自己关屏: http://developer.qt.nokia.com/doc/qt-4.8/qwidget.html#render

从技术上讲,这不是一个截图,因为它使小部件明确地用于此目的,而不是捕捉在屏幕上看到什么。几乎任何目的都没关系。

如果您有GL小部件,则可以/必须改为使用grabFramebuffer(),它具有捕获屏幕上显示内容的优点。

如果您有ID,QPixmap可让您进行窗口抓取。我引用了PyQt的,但我敢肯定,你可以进行调整:

How to get RGB values of QPixmap or QImage pixel - Qt, PyQt

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qpixmap.html#grabWindow

有了这个例子中,你可以得到你所有的构件屏幕。 您可以将此方法附加到任何按键或信号上,以获得连续的屏幕截图。

MyClass::screenshot() 
{ 
    QWidget *w = QApplication::activeWindow(); 
    if(w) { 
     static int count = 0; 
     QPixmap p = QPixmap::grabWidget(w); 
     p.save(QString("/your/path/screenshot%1.png").arg(count)); 
     count++; 
    } 
}