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

📄 dragwidget.cpp

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

DragWidget::DragWidget(QWidget *parent)
	: QFrame(parent)
{
    setMinimumSize(300,300);
    setAcceptDrops(true);
    setFrameStyle(QFrame::StyledPanel|QFrame::Raised);
    
}

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

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

void DragWidget::dropEvent(QDropEvent * e)
{
    if (e->mimeData()->hasFormat("Drag-Text"))
    {
    	QByteArray data = e->mimeData()->data("Drag-Text");
    	QDataStream stream(&data,QIODevice::ReadOnly);
    	QString text;
    	QPoint offset;
    	stream >> text >> offset;
    	
    	DragLabel *label = new DragLabel(text,this);
    	label->move(e->pos() - offset);
    	label->show();
    	
    	if (children().contains(e->source()))
	{
	    e->setDropAction(Qt::MoveAction);
	    e->accept();
	}
	else
	    e->acceptProposedAction();
    }
    else if (e->mimeData()->hasText())
    {
    	QStringList strList = e->mimeData()->text().split(QRegExp("\\s+"),QString::SkipEmptyParts);
    	QPoint pos = e->pos();
    	
    	foreach(QString str, strList)
    	{
	    DragLabel *dragLabel = new DragLabel(str,this);
	    dragLabel->move(pos);
	    dragLabel->show();
	    pos += QPoint(dragLabel->width(),0);
	}
	
	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 + -