10
votes

Prise de la capture d'écran d'une fenêtre spécifique - C ++ / QT

En Qt, comment puis-je prendre une capture d'écran d'une fenêtre spécifique (c'est-à-dire supposez que je dispose de bloc-notes et je voulais prendre une capture d'écran de la fenêtre intitulée "Untitled - Notepad")? Dans leur code d'écran d'écran, ils montrent comment prendre une capture d'écran de l'ensemble du bureau:

originalPixmap = QPixmap::grabWindow(QApplication::desktop()->winId());


0 commentaires

5 Réponses :


6
votes

Je suis sûr que c'est spécifique à la plate-forme. Winids sont hwnds sous Windows, vous pouvez donc appeler Findwindow (NULL, "Sans titre - NotePad") Dans l'exemple que vous avez donné.


0 commentaires

1
votes

regarder également windowfrompoind et Enumchildwindows . Ce dernier pourrait vous permettre d'inviter l'utilisateur à désambiguoir si vous aviez plusieurs fenêtres avec le même titre.


0 commentaires

2
votes

Regardez la classe Qdesktopwidget. Il est hérité de qwidget donc il n'y a littéralement aucun problème de prise de capture d'écran: xxx


1 commentaires

Pour la version 4.8 Je devais apporter de peu de modifications à votre extrait. Principalement: Créez un objet de type qdesktopwidget à appeler scénarométrie () et écran () et modifier écran (). Render (). ) à écran () -> Render () , comme écran () renvoie un qwidget * .



-1
votes

Bien que cela ait déjà été répondu, juste pour des raisons d'exhaustivité, j'ajouterai à Trevor Boyd Smith's Post (voir ci-dessus) un exemple d'extraction de code:

void MainWindow::on_myButton_GUI_Screeshot_clicked()
{
    QPixmap qPixMap = QPixmap::grabWidget(this);  // *this* is window pointer, the snippet     is in the mainwindow.cpp file

    QImage qImage = qPixMap.toImage();

    cv::Mat GUI_SCREENSHOT = cv::Mat(         qImage.height(),
                                              qImage.width(), CV_8UC4,
                                      (uchar*)qImage.bits(),
                                              qImage.bytesPerLine()  );

    cv::imshow("GUI_SCREENSHOT",GUI_SCREENSHOT);
}


0 commentaires

1
votes

Jetez un coup d'œil à exemple de capture d'écran

En bref: xxx


1 commentaires

Cette réponse ne concerne pas "Prendre la capture d'écran d'une fenêtre spécifique". Il s'agit de prendre la capture d'écran de l'écran entier.