Loading ...

Utilizzare la clipboard in Qt con QClipboard

Utilizzare la clipboard in Qt con QClipboard

Non so bene a cosa possa essere utile memorizzare la clipboard in un programma, però ero curioso di capire come funziona il componente Qt QClipboard!

Ad essere sincero ho avuto un pò di difficoltà nel capire il senso, comunque vi mostro un esempio.

Al click su un Button scateniamo questo:

void MainWindow::on_pushButton_clicked() {
    QClipboard *clipboard = QApplication::clipboard();
    const QMimeData *mimeData = clipboard->mimeData();

    if (mimeData->hasImage()) {
        clipboard->setPixmap(qvariant_cast(mimeData->imageData()));
        qDebug() << "Immagine";
    } else if (mimeData->hasHtml()) {
        clipboard->setText(mimeData->html());
        qDebug() << "HTML";
    } else if (mimeData->hasText()) {
        clipboard->setText(mimeData->text());
        qDebug() << "Testo semplice";
    } else {
        clipboard->setText(tr("Impossibile visualizzare i dati copiati!"));
        qDebug() << "Nessuno dei precedenti";
    }
}

In pratica andiamo a controllare cosa è salvato nella clipboard.

Come mi hanno giustamente fatto notare, le immagini non dovete copiarle dal filesystem.

Dovete fare un copia di una immagine aperto in un editor di immagine (Photoshop, Gimp, ecc).

Nell'header della vostra classe dovete includere questo:

#include <QDebug>
#include <QClipboard>
#include <QMimeData>
#include <QPixmap>

Fate qualche test per capirne bene il funzionamento.

Enjoy!