i am writing a screen capture application in Qt4 with c++. I have a problem when tuning on dual screens. I am unable to get an image with the second screen. I tried a c# applica
In a multi-monitor setup on Windows, the monitors are usually joined into a virtual desktop. I say "usually" because I'm not entirely sure what happens on all the Windows versions from XP SP0 (October 25, 2001) to Win8 SP0 (October 26, 2012). But, as a virtual desktop, that means that screen(x)
will always return the same widget; from what I've seen this is the one and only QDesktopWidget itself. However, screenGeometry(x)
will return different values for each enumerated monitor.
You can grab the second screen by using the result of screenGeometry(x)
as the parameters to QPixmap::grabWindow; ie:
QDesktopWidget* desktop = QApplication::desktop();
WId wid = desktop->winId();
QRect geo = desktop->screenGeometry(indexOfTheMonitorYouWant);
QPixmap cap = QPixmap::grabWindow(wid, geo.left(), geo.top(), geo.width(), geo.height());
This is working for me right now, and I'm about to hand the build off to my QA team.