void ResultsJsInterface::pushImageToClipboard(const QByteArray &base64, const QString &html) { QMimeData *mimeData = new QMimeData(); QByteArray byteArray = QByteArray::fromBase64(base64); QImage pm; if(pm.loadFromData(byteArray)) { #ifdef __WIN32__ //needed because jpegs/clipboard doesn't support transparency in windows QImage image2(pm.size(), QImage::Format_ARGB32); image2.fill(Qt::white); QPainter painter(&image2); painter.drawImage(0, 0, pm); mimeData->setImageData(image2); #else mimeData->setImageData(pm); #endif } if ( ! html.isEmpty()) mimeData->setHtml(html); if (mimeData->hasImage() || mimeData->hasHtml()) { QClipboard *clipboard = QApplication::clipboard(); clipboard->setMimeData(mimeData, QClipboard::Clipboard); } }
void tst_QMimeData::setHtml() const { QMimeData mimeData; // initial state QVERIFY(mimeData.hasHtml() == false); // add html, verify mimeData.setHtml("ninjas"); QVERIFY(mimeData.hasHtml()); QCOMPARE(mimeData.html(), QLatin1String("ninjas")); // reset html mimeData.setHtml("pirates"); QVERIFY(mimeData.hasHtml()); QCOMPARE(mimeData.html(), QLatin1String("pirates")); }
QDebug operator<<(QDebug d, const QMimeData &m) { QDebug nospace = d.nospace(); const QStringList formats = m.formats(); nospace << "QMimeData: " << formats.join(QStringLiteral(", ")) << '\n' << " Text=" << m.hasText() << " HTML=" << m.hasHtml() << " Color=" << m.hasColor() << " Image=" << m.hasImage() << " URLs=" << m.hasUrls() << '\n'; if (m.hasText()) nospace << " Text: '" << m.text() << "'\n"; if (m.hasHtml()) nospace << " HTML: '" << m.html() << "'\n"; if (m.hasColor()) nospace << " Color: " << qvariant_cast<QColor>(m.colorData()) << '\n'; if (m.hasImage()) nospace << " Image: " << qvariant_cast<QImage>(m.imageData()).size() << '\n'; if (m.hasUrls()) nospace << " URLs: " << m.urls() << '\n'; return d; }
void tst_QMimeData::hasHtml() const { QMimeData mimeData; // initial state QVERIFY(mimeData.hasHtml() == false); // add plain, verify false mimeData.setData("text/plain", "pirates"); QVERIFY(mimeData.hasHtml() == false); // add html, verify mimeData.setData("text/html", "ninjas"); QVERIFY(mimeData.hasHtml()); // clear, verify mimeData.clear(); QVERIFY(mimeData.hasHtml() == false); // readd, verify mimeData.setData("text/html", "ninjas"); QVERIFY(mimeData.hasHtml()); }