Qt中自定义控件拖拽,QT实现拖拽功能--小白友好版_qt拖动控件_PPLW的博客-优快云博客
Qt拖拽及其使用技巧_qt 拖拽_BC菜鸟的博客-优快云博客
Qt--拖放操作_qt拖入文件并读取_Half-up的博客-优快云博客
(1)构造函数中
this->setAcceptDrops(true);
ui->video_1->installEventFilter(this);
(2)
bool eventFilter(QObject *obj, QEvent *event)
{
QPushButton* btn = nullptr;
btn= qobject_cast<QPushButton*>(obj);
//按钮禁用时不可拖拽
if(btn->isEnabled())
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if(mouseEvent ->type()==QEvent::MouseMove&&mouseEvent->buttons()==Qt::LeftButton)
{
QApplication::startDragDistance();
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
mimeData->setText(btn->objectName());
qDebug()<<btn->objectName()<<"被拖拽了";
//调用mimeData传递的信息
drag->setMimeData(mimeData);
drag->exec();
}
}
return false;
}
(3)dragEnterEvent(QDragEnterEvent* event)、dropEvent(QDropEvent *event)
void AEBWidget::dragEnterEvent(QDragEnterEvent* event)
{
event->acceptProposedAction();
}
void AEBWidget::dropEvent(QDropEvent *event)
{
...
}