我希望能够获取QImage并将其放入编辑程序,例如Paint。我已尝试使用以下代码将mime数据设置为当前图像,但数据无法正确移动。 pixmap正确显示,但不会发生丢弃。如果有人有任何建议,那将非常感谢!谢谢!
void LCDWidget::mousePressEvent(QMouseEvent *e) {
if (e->button() == Qt::LeftButton) {
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
QImage image = renderFramebuffer(lcdState);
QPixmap mymap = QPixmap::fromImage(image);
mimeData->setImageData(image);
drag->setMimeData(mimeData);
drag->setHotSpot(e->pos());
drag->setPixmap(mymap);
drag->exec(Qt::CopyAction | Qt::MoveAction);
e->accept();
} else {
e->ignore();
}
}
答案 0 :(得分:0)
我最终通过以下代码解决了这个问题。解决方案是将图像复制到本地文件,然后使用文件的路径作为复制数据。
void LCDWidget::mousePressEvent(QMouseEvent *e) {
if (e->button() == Qt::LeftButton) {
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
QImage image = getImage();
QPixmap mymap = QPixmap::fromImage(image);
QString path = QDir::tempPath() + randomString(5) + QStringLiteral(".png");
image.save(path, "PNG", 0);
mimeData->setImageData(image);
mimeData->setUrls(QList<QUrl>() << QUrl::fromLocalFile(path));
drag->setMimeData(mimeData);
drag->setHotSpot(e->pos());
drag->setPixmap(mymap);
drag->exec(Qt::CopyAction | Qt::MoveAction);
e->accept();
} else {
e->ignore();
}
}