Snippet #17 ~ C++/QT: Faire un screenshot (capture d’écran)

Voila un moment que je n’ai pas posté de snippet, pour me rattraper, voici un petit exemple de screenshot avec la formidable librairie QT pour C++:

QPixmap originalPixmap = QPixmap::grabWindow(QApplication::desktop()->winId(),20,20,150,150);
ui->labelScreenShot->setPixmap(originalPixmap);

évidemment dans cet exemple, ui->labelScreenShot représente l’élément QLabel de votre interface graphique qui contiendra le screenshot.

6 réactions au sujet de « Snippet #17 ~ C++/QT: Faire un screenshot (capture d’écran) »

  1. lo Réponse

    BRAVO,

    environ un an que je suis ce blog (et m’interesse à tes développements logiciels)

    et bien c’est la première fois que je n’ai même pas une idée de quoi tu parles !

    m’en vais me renseigner…

    • Idleman Auteur ArticleRéponse

      Merci pour ta fidélité :p

      Je peux peut être te renseigner ^^, sur quoi tu bloque?

      Le C++ est un langage bas niveau orienté objet très utilisé pour les applications bureautiques

      Qt est une librairie pour C++ qui fournis énormément de fonctions pré-machées très pratiques et qui permet de gérer très facilement les GUI (interfaces graphiques) de ton programme, cette librairie est devenue tellement importante qu’ils ont finit par développer leurs propre compilateur C++ pour Qt, puis plus récemment, leurs propre IDE (Qt Créator).

      Le snippet proposé permet tous simplement de faire des impression d’écran via un programme C++ et d’afficher la miniature dans un QLabel (a savoir un label graphique géré par Qt).

      N’hésite pas à demander des compléments d’informations, je suis la pour ça et j’aime quand mes posts suscitent le débats et/ou le questionnement 🙂

      • lo Réponse

        Merci pour ces explications,

        je ne connaissais pas le mot snippet,
        le C++ j’en ai entendu parlé par un pote à l’armée (en 1996) moi qui ne connais que le basic,
        une librairie c’est vague mais je vois l’idée,
        et pour le screenshot je n’avais pas tilté

  2. Tirok Réponse

    Bonjour,
    Je viens de découvrir ton blog qui a l’air fortement interessant!
    Je n’ai pas un niveau très avancé en programmation mais je m’y interesse de plus en plus et je prend plaisir à apprendre de nouvelles choses.
    Actuellement je me suis lancé dans un petit projet en C++.
    Dans le cadre ds mon projet je travaille sur la capture d’ecran et j’aurais voulu savoir si tu aurais pu me donner quelques informations stp?

    Pour essayer de t’expliquer le plus clair possible ce que je souhaite faire, je cherche a :
    – faire une capture d’écran d’une partie précise de mon ecran
    – comparer l’image issue de cette capture avec une image dèja enregistée et agir si l’image est différente.
    (je réalise un programme en console)

    Je comprendrais que tu es peut etre occupé sur diverses projets mais si tu pouvais m’indiquer quelques bouts de code qui réalisent ces oppérations et que je me débrouillerais à annalyser ensuite cela m’aiderait deja beaucoup. ^^

    • Idleman Auteur ArticleRéponse

      Pour faire une capture il te suffit de récupérer le snippet ce dessus, pour comparer les deux captures que tu fera a t et t+1, la méthode la plus basique (mais qui fonctionne) est encore d’utiliser scanLine(), scanLine() retourne un pointeur vers bytePerLine() qui est une series de bites représentants une ligne sur ton image.

      Donc tu chope ligne de bits par lignes de bits et tu les compare a ceux de ta seconde image :).

      Voila pour la piste, après je n’ai malheureusement pas le temps de te trouver le code associé mais si tu suis cette logique tu devrait y arriver assez vite:)

Répondre à lo Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.