我正在嘗試通過拖放創建一個類。我希望它被用作未來派生類的基類。我希望派生類為拖放指定 MIME 資料。我做了一個函式,將 MIME 資料作為指標回傳,我不確定這樣做是否安全。會不會導致記憶體泄漏或其他問題?它現在可以作業并且不顯示任何警告。我是 Qt 新手,對 C 中的指標沒有太多經驗,如果這是一個愚蠢的問題,我很抱歉。
QMimeData* BasicGraphicsObject::setObjectMimeData()
{
QMimeData *mime = new QMimeData;
mime->setImageData(itemToImage());
mime->setText("BasicItem");
return mime;
}
拖拽實作功能:
void BasicGraphicsObject::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
// This prevents mouse jitter noise, drag starts only if distance is sufficient
if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton))
.length() < QApplication::startDragDistance()) {
return;
}
//initialising drag event
QDrag *drag = new QDrag(event->widget());
//setting mime data with setObjectMimeData function
drag->setMimeData(setObjectMimeData());
//setting cursor as an image of the item being dragged
drag->setPixmap(itemToImage().scaled(boundingRect().size().toSize()));
drag->setHotSpot(QPoint(15,20));
drag->exec();
setCursor(Qt::OpenHandCursor);
}
uj5u.com熱心網友回復:
QDrag::setMimeData()的手冊頁說“QMimeData 物件的所有權轉移給 QDrag 物件”,這是另一種說法,即 QDrag 物件在完成 QMimeData 物件后將洗掉它。因此,您不應該遇到 QMimeData 物件的任何記憶體泄漏(除非您從不使用它呼叫 setMimeData())
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476823.html
上一篇:如何在Qtpython中顯示圖片
下一篇:QTQML C MVVM
