Je pense que vous voulez QPixmap::grabWindow(...)
, mais je crains de ne pas utiliser QML, donc je ne suis pas certain de la façon dont vous obtiendriez l'obtention du pixmap ou son utilisation. Si l'on regarde une partie de la documentation de Qt, on peut penser que le sous-classement QDeclarativeImageProvider
serait un bon point de départ. Quelque chose comme:
class cScreenGrabber : public QDeclarativeImageProvider
{
public:
cScreenGrabber()
: QDeclarativeImageProvider(QDeclarativeImageProvider::Pixmap) { }
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
QWidget *ViewWidget = //get the widget containing your view//
QPixmap Pixmap = QPixmap::grabWindow(ViewWidget.winId(), 0, 0,
requestedSize.width() > 0 ? requestedSize.width() : -1,
requestedSize.height() > 0 ? requestedSize.height() : -1);
if (size)
*size = QSize(Pixmap.width(), Pixmap.height());
return Pixmap;
}
};
QPixmap :: grabWidget() fonctionne dans ce cas pour moi puisque mon QML est enveloppé dans une fenêtre QWidget. Merci pour votre aide. –