La prise de capture d'écran d'une fenêtre spécifique - C++ / Qt
Dans Qt, comment dois-je prendre une capture d'écran d'une fenêtre spécifique (c'est à dire supposons que j'ai eu le bloc-notes et je voulais prendre une capture d'écran de la fenêtre intitulée "sans titre - bloc-notes")?
Dans leurs capture d'écran d'un exemple de code, ils montrent comment prendre une capture d'écran de l'ensemble du bureau:
originalPixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
Comment puis-je obtenir le winId() pour une fenêtre spécifique (en supposant que je savais que le titre de la fenêtre) dans Qt?
Grâce
OriginalL'auteur Switch | 2009-11-21
Vous devez vous connecter pour publier un commentaire.
Je suis assez sûr que c'est spécifique à la plateforme. winIds sont Hwnd sur Windows, de sorte que vous pourriez appeler
FindWindow(NULL, "Untitled - Notepad")
dans l'exemple que vous avez donné.OriginalL'auteur ChrisV
Pour Qt de la façon dont vous "prendre une capture d'écran d'une fenêtre spécifique" est de:
OriginalL'auteur Trevor Boyd Smith
Regarder QDesktopWidget classe. Il est hérité de QWidget, donc il n'y a littéralement pas de problème de prise de capture d'écran:
4.8
j'ai eu à faire de petits changements à votre extrait de code. Principalement: créer un objet de typeQDesktopWidget
appelerscreenGeometry()
etscreen()
, et le changementscreen().render()
àscreen()->render()
, commescreen()
renvoie uneQWidget*
.OriginalL'auteur GreenScape
Ont un coup d'oeil à Exemple de capture d'écran
En bref:
OriginalL'auteur Nya
Aussi regarder
WindowFromPoint
etEnumChildWindows
. Ce dernier peut vous permettre de demander à l'utilisateur de lever l'ambiguïté de si vous aviez plusieurs windows avec le même titre.OriginalL'auteur Jake Petroules
Bien que cela a déjà été répondu, juste par souci d'exhaustivité, je vais ajouter à Trevor Boyd Smith post (voir ci-dessus) un code-exemple de fragment:
OriginalL'auteur dim_tz