dragicon.cpp

来自「Linux窗口程序设计,Qt4精彩实例分析,以循序渐进的方式介绍Qt4开发及其实」· C++ 代码 · 共 47 行

CPP
47
字号
#include "dragicon.h"

DragIcon::DragIcon(QPixmap pix, QWidget *parent)
	: QLabel(parent)
{
     setScaledContents(true);
     setPixmap(pix);
}

void DragIcon::mousePressEvent(QMouseEvent * e)
{
    if(e->button() == Qt::LeftButton)
        startPos = e->pos();
}

void DragIcon::mouseMoveEvent(QMouseEvent * e)
{
    if (!e->buttons()&Qt::LeftButton)
    	return;
    if ((e->pos() - startPos).manhattanLength() < QApplication::startDragDistance())
    	return;

    QPixmap pix = *pixmap(); 
     
    QByteArray data;
    QDataStream stream(&data,QIODevice::WriteOnly);
    stream << pix << QPoint(e->pos()-rect().topLeft());
    QMimeData *mimeData = new QMimeData;
    mimeData->setData("Drag-Icon",data);

    QDrag *drag = new QDrag(this);
    drag->setMimeData(mimeData);
    drag->setHotSpot(QPoint(e->pos() - rect().topLeft()));
    drag->setPixmap(pix);
     
    hide();

    Qt::DropAction dropAction = drag->start(Qt::CopyAction | Qt::MoveAction);
  
    if (dropAction == Qt::MoveAction) 
        close();
    else
        show();
}


⌨️ 快捷键说明

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