La façon de traiter le problème de chrome dépend de votre objectif. Le "chrome" auquel vous faites référence est une partie de l'application de navigateur Web avec laquelle vous essayez d'interagir. Si vous faites cela en tant que bidouillage rapide en interne, alors vous êtes libre de coder en dur certains décalages nécessaires pour rogner le pixmap original afin que le chrome soit supprimé.
Si vous voulez quelque chose qui peut capturer des captures d'écran de site Web et ne se soucie pas du navigateur utilisé, vous devriez utiliser WebKit fourni avec Qt. Ensuite, vous avez un contrôle total sur l'endroit où les choses sont rendues. Si vous voulez capturer des captures d'écran à partir d'un navigateur fourni par l'utilisateur, une approche consiste à ajouter une extension dans le navigateur et à implémenter un serveur pouvant recevoir des images de l'extension exécutée dans le navigateur. L'extension peut être écrite en javascript sans doute pour tout ce qui existe mais IE. Ce sera spécifique au navigateur, cependant.
Une autre approche consiste à vérifier si le navigateur ne fournit pas d'autres API qui pourraient être utilisées à cette fin, sans avoir besoin d'écrire une extension. Pour autant que je sache, des extensions similaires devraient déjà exister. Il existe sûrement des frameworks de test de site web open source qui vous permettent de rendre un site dans plusieurs navigateurs; ils devraient fournir cette fonctionnalité "saisir à partir d'un navigateur". Nitpick: Dans Qt 5, vous devez utiliser QScreen::grabWindow()
, pas QPixmap::grabWindow()
obsolète. J'espère aussi que vous êtes au courant que s'il y a des fenêtres devant votre fenêtre et que vous l'obscurcissez, elles seront saisies. La saisie est effectuée à partir de l'écran, pas directement à partir de la fenêtre.
Veuillez ajouter le code correspondant à ce que vous avez essayé – Ani