⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dragwidget.cpp

📁 Linux窗口程序设计,Qt4精彩实例分析,以循序渐进的方式介绍Qt4开发及其实例子,第一部分
💻 CPP
字号:
#include "dragwidget.h"
#include "dragicon.h"

DragWidget::DragWidget(QWidget *parent)
	: QWidget(parent)
{
    setMinimumSize(400,400);
    setAcceptDrops(true);

    DragIcon *icon1 = new DragIcon(QPixmap(":/images/sheep.png"),this);
    DragIcon *icon2 = new DragIcon(QPixmap(":/images/heart.png"),this);
    DragIcon *icon3 = new DragIcon(QPixmap(":/images/fish.png"),this);
    
    icon1->move(20,20);
    icon2->move(120,20);
    icon3->move(220,20);
}

void DragWidget::dragEnterEvent(QDragEnterEvent * e)
{
    if (e->mimeData()->hasFormat("Drag-Icon"))
    {
    	if(children().contains(e->source()))
    	{
    	    e->setDropAction(Qt::MoveAction);
      	    e->accept();
	}
	else
	    e->acceptProposedAction();
    }
}

void DragWidget::dragMoveEvent(QDragMoveEvent * e)
{
    if (e->mimeData()->hasFormat("Drag-Icon"))
    {
    	if(children().contains(e->source()))
    	{
    	    e->setDropAction(Qt::MoveAction);
      	    e->accept();
	}
	else
	    e->acceptProposedAction();
    }
}

void DragWidget::dropEvent(QDropEvent * e)
{
    if (e->mimeData()->hasFormat("Drag-Icon"))
    {
    	QByteArray data = e->mimeData()->data("Drag-Icon");
    	QDataStream stream(&data,QIODevice::ReadOnly);
    	QPixmap pix;
    	QPoint offset;
    	stream >> pix >> offset;
    	
    	DragIcon *icon = new DragIcon(pix,this);
    	icon->move(e->pos() - offset);
    	icon->show();
    	
    	if (children().contains(e->source()))
	{
	    e->setDropAction(Qt::MoveAction);
	    e->accept();
	}
	else
	    e->acceptProposedAction();
    }
    else
    	e->ignore();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -