Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt中的图像丢弃_Qt - Fatal编程技术网

Qt中的图像丢弃

Qt中的图像丢弃,qt,Qt,我希望能够采取一个QImage和下降到一个编辑程序,如油漆,例如它。我尝试使用以下代码将mime数据设置为当前图像,但数据移动不正确。pixmap显示正确,但从未发生下降。如果有人有任何建议,我们将不胜感激!谢谢 void LCDWidget::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::LeftButton) { QDrag *drag = new QDrag(this); QM

我希望能够采取一个QImage和下降到一个编辑程序,如油漆,例如它。我尝试使用以下代码将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();
    }
}

我最终用下面的代码解决了这个问题。解决方案是将图像复制到本地文件,然后使用该文件的路径作为复制数据

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();
    }
}
void LCDWidget::mousePressEvent(QMouseEvent*e){
如果(e->button()==Qt::LeftButton){
QDrag*拖动=新的QDrag(本);
QMimeData*mimeData=新QMimeData;
QImage image=getImage();
QPixmap mymap=QPixmap::fromImage(图像);
QString path=QDir::tempPath()+随机字符串(5)+QStringLiteral(.png”);
保存(路径“PNG”,0);
mimeData->setImageData(图像);
mimeData->setURL(QList()setMimeData(mimeData);
拖动->设置热点(e->pos());
拖动->设置PixMap(mymap);
拖动->执行(Qt::CopyAction | Qt::MoveAction);
e->accept();
}否则{
e->ignore();
}
}

Paint通常接受图像拖放吗?请先从其他应用程序拖动来尝试。