qt之QDrag

来源:互联网 发布:如何屏蔽公司网络监控 编辑:程序博客网 时间:2024/04/30 01:41

这个QDrag类提供了MIME基础数据类型的拖动和释放,

拖动和放下对用户拷贝和移动数据是一种直观的方式。

 

数据的移动通过QMimeData的拖动和放下完成,设置数据是通过如下的方式

 

     QDrag *drag = new QDrag(this);

        QMimeData *mimeData = new QMimeData;

 

        mimeData->setText(commentEdit->toPlainText());

        drag->setMimeData(mimeData);

Drag->setMimeData 指定QMimeData对象到QDrag对象,此时QDrag必须在堆中被构建,因为在拖放完成之后 ,qt会清理QDrag对象

当拖动进行时,我们可以用pixmap来代表拖动的数据,这个pixmap可以用来代表MiME类型,我们也可以通过函数setpixmap(),来指定pixmap,而这个鼠标的焦点,我们可以通过setHotSpot来指定鼠标在拖动期间在pixmap上的位置,下面的代码将鼠标设置在底部的中心

       

    

drag->setHotSpot(QPoint(drag->pixmap().width()/2,

                            drag->pixmap().height()));

 

  源窗口和目标窗口,可以通过成员函数source()target()查找,这两个函数决定了,拖放是否是在同一个窗口

 

  QDrag 仅仅是处理自己的拖放操作,当托操作开始的时候,它适用于开发者去决定怎样去构造或者使用一个QDrag对象。

 在通常情况下,通过重新实现mousepressEvent来决定用户是否按下鼠标按钮,mouseMoveEvent检查是否需要QDrag

QDrag::QDrag(QObject * dragSource)

 

在源窗口构建一个QDrag对象。

QDrag::~QDrag()

 销毁对象

void QDrag::actionChanged(Qt::DropAction action)

 

当拖懂的行为被该变时,发射该信号

 

 

Qt::DropAction QDrag::defaultAction() const

返回拖动操作的默认放下行为

 

QPixmap QDrag::dragCursor(Qt::DropAction action) const

返回拖动操作时的鼠标图标

Qt::DropAction QDrag::exec(Qt::DropActions supportedActions = Qt::MoveAction)

 

开始拖放操作,放托放完成之后会返回一个请求放下行为的指示值,而这个放下的操作用户可以用指定的supportedActions中选择

QPoint QDrag::hotSpot() const

返回相对于鼠标左上角的的焦点

 

QMimeData * QDrag::mimeData() const

 

返回通过setMimeData设置的QMimeDate

 

QPixmap QDrag::pixmap() const

返回代表拖放操作数据的图片,可以通过setPixmap函数设置这个图片

 

 

 

 

void QDrag::setDragCursor(const QPixmap & cursorQt::DropAction action)

设置拖动时的鼠标,这个action只对CopyAction,MoveAction or LinkAction有作用

 

void QDrag::setHotSpot(const QPoint & hotspot)

设置拖动的热点

 

void QDrag::setMimeData(QMimeData * data)

QDrag中设置QMimeData

 

 

void QDrag::setPixmap(const QPixmap & pixmap)

设置拖放时,代表数据的图标,在拖动开始之前

 

QObject * QDrag::source() const

返回拖放的源窗口

Qt::DropActions QDrag::supportedActions() const

返回支持放下的行为。

 

void QDrag::targetChanged(QObject * newTarget)

当目标窗口被改变时,将会发射该信号

0 0