Les textes
La manipulation des données du presse-papiers est très simple avec Qt. Le bout de code qui suit stocke le texte contenu dans le
clipboard dans un
QString :
Code : C++ | QClipboard *pressePapiers = QApplication::clipboard();
QString textePressePapiers = pressePapiers->text();
|
Maintenant, analysons les deux lignes ci-dessus l'une après l'autre.
Code : C++ | QClipboard *pressePapiers = QApplication::clipboard();
|
La méthode statique
clipboard() de la classe
QApplication retourne un pointeur vers le presse-papiers de l'application.
Code : C++ | QString textePressePapiers = pressePapiers->text();
|
La méthode
text() de la classe
QClipboard retourne le texte contenu dans le presse-papiers. Si vous vous rappelez le tutoriel sur Qt de M@teo21 et Nanoc, vous devriez connaître la syntaxe des accesseurs et des mutateurs avec Qt. La méthode
text() est un accesseur, donc le mutateur qui change le texte contenu dans le
clipboard est
setText(QString text).
La méthode setText(QString text) prend une QString comme argument, celle-ci est bien évidemment le texte qui va être mis dans le presse-papiers.
Oui, mais tu as dit qu'on pouvait stocker plusieurs types de données, comme des images... Ce n'est que du texte, ça !
Patience, patience. J'allais justement répondre à votre question.
Les images
Pour les images, c'est la même chose que pour le texte — sauf le nom des méthodes bien sûr.

Mais avec Qt et le
clipboard, il y a deux types d'images : le
QImage et le
QPixmap.
Quelle est la différence entre les deux ?
La différence, c'est que
QImage est une classe qui permet un accès direct aux données des pixels de l'image, donc elle est spécialement conçue pour être
peinte. Tandis que la classe
QPixmap est conçue pour être affichée. Lorsque vous voulez afficher une image rapidement, utilisez
QPixmap ; quand vous voulez faire des retouches sur l'image, utilisez
QImage.
Comme je l'ai dit plus haut, seuls les noms et les types d'arguments diffèrent avec les images. Ce qui donne pour les accesseurs :
Code : C++ | image() //Retourne QImage.
pixmap() //Retourne QPixmap.
|
Et pour les mutateurs :
Code : C++ | setImage(QImage image)
setPixmap(QPixmap pixmap)
|
C'est simple, non ?

Il y a aussi une méthode pour vider le contenu du presse-papiers : la méthode
clear(). Elle est très facile à utiliser.
Code : C++ | pressePapiers->clear(); //Vide le presse-papiers
|