QDrag Class Reference
[QtGui module]
该QDrag类提供了基于MIME的拖放支持拖放的数据传输。More…
继承QObject。
Methods
__init__ (self, QWidget dragSource)
Qt.DropAction exec (self, Qt.DropActions supportedActions, Qt.DropAction defaultDropAction)
Qt.DropAction exec_ (self, Qt.DropActions supportedActions = Qt.MoveAction)
Qt.DropAction exec_ (self, Qt.DropActions supportedActions, Qt.DropAction defaultDropAction)
QPoint hotSpot (self)
QMimeData mimeData (self)
QPixmap pixmap (self)
setDragCursor (self, QPixmap cursor, Qt.DropAction action)
setHotSpot (self, QPoint hotspot)
setMimeData (self, QMimeData data)
setPixmap (self, QPixmap)
QWidget source (self)
Qt.DropAction start (self, Qt.DropActions supportedActions = Qt.CopyAction)
QWidget target (self)
Qt Signals
void actionChanged (Qt::DropAction)
void targetChanged (QWidget *)
Detailed Description
该QDrag类提供了基于MIME的拖放支持拖放的数据传输。
拖放是一种直观的方式为用户在应用程序中各地复制或移动数据,并且被用在许多桌面环境作为一种机制来复制应用程序之间的数据。拖动和Qt中的拖放支持是围绕该处理大部分的拖放操作的细节QDrag类。
通过拖放操作要传输的数据被包含在一个QMimeData对象。这是指定的setMimeData()函数以下面的方式:
QDrag *drag = new QDrag(this);
[QMimeData]($docs-qmimedata.html) *mimeData = new [QMimeData]($docs-qmimedata.html);
mimeData->setText(commentEdit->toPlainText());
drag->setMimeData(mimeData);
需要注意的是setMimeData( )分配的所有权QMimeData反对QDrag对象。该QDrag必须在堆上与父构造QWidget确保Qt可以拖动后清理和删除操作已经完成。
一个像素图可以用来表示数据,而拖动操作正在进行,并将光标移动到放置目标。这个像素图通常显示一个图标,表示该MIME类型正在传送的数据的,但任何像素映像可以被设置setPixmap( ) 。光标的热点可以给出相对位置一个与该像素图的左上角setHotSpot()函数。下面的代码位置的像素图,使光标的热点点,其底边的中心:
drag->setHotSpot([QPoint]($docs-qpoint.html)(drag->pixmap().width()/2,
drag->pixmap().height()));
Note:在X11上,像素图可能无法跟上鼠标移动,如果热点直接导致光标下要显示的像素图。
源和目标部件可与发现source()和target( ) 。这些功能通常是用来确定是否拖放操作开始和结束于相同的部件,因此,特殊的行为可以被实现。
QDrag只处理拖放操作本身。它是由开发人员来决定拖动操作开始时,以及如何QDrag对象应该被构建和使用。对于给定窗口小部件,它通常需要重新实现mousePressEvent()确定用户是否按下鼠标按钮,并重新实现mouseMoveEvent()检查一个QDrag是否是必需的。
Method Documentation
QDrag.__init__ (self, QWidget dragSource)
该dragSource的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的拖动对象通过指定的窗口小部件dragSource。
Qt.DropAction QDrag.exec (self, Qt.DropActions supportedActions, Qt.DropAction defaultDropAction)
[
开始拖放操作,并返回一个值,指示请求的拖放操作何时完成。下拉的动作,用户可以选择在指定supportedActions。默认建议的行动会按以下顺序允许的动作中进行选择:移动,复制和链接。
Note:在Linux和Mac OS X上,拖放操作可能需要一些时间,但这个功能不会阻止事件循环。其他事件仍传送到应用程序,同时执行操作。在Windows上, Qt的事件循环的操作过程中受阻时。
此功能被引入Qt的4.3 。
]($docs-qt.html#DropAction-enum)
Qt.DropAction QDrag.exec_ (self, Qt.DropActions supportedActions = Qt.MoveAction)
[
开始拖放操作,并返回一个值,指示请求的拖放操作何时完成。下拉的动作,用户可以选择在指定supportedActions。默认建议的行动会按以下顺序允许的动作中进行选择:移动,复制和链接。
Note:在Linux和Mac OS X上,拖放操作可能需要一些时间,但这个功能不会阻止事件循环。其他事件仍传送到应用程序,同时执行操作。在Windows上, Qt的事件循环的操作过程中受阻时。
此功能被引入Qt的4.3 。
]($docs-qt.html#DropAction-enum)
Qt.DropAction QDrag.exec_ (self, Qt.DropActions supportedActions, Qt.DropAction defaultDropAction)
[
开始拖放操作,并返回一个值,指示请求的拖放操作何时完成。下拉的动作,用户可以选择在指定supportedActions。
该defaultDropAction决定当用户执行一拖而不使用组合键的操作将被提出。
]($docs-qt.html#DropAction-enum)
Note:在Linux和Mac OS X上,拖放操作可能需要一些时间,但这个功能不会阻止事件循环。其他事件仍传送到应用程序,同时执行操作。在Windows上, Qt的事件循环的操作过程中受阻。但是,QDrag.exec( )在Windows上导致processEvents ( )被频繁调用,以保证GUI作出响应。如果有任何循环或操作被调用,而拖动操作是积极的,它会阻止拖动操作。
此功能被引入Qt的4.3 。
QPoint QDrag.hotSpot (self)
[
返回到光标的左上角相对于热点的位置。
]($docs-qpoint.html)
See also setHotSpot( ) 。
QMimeData QDrag.mimeData (self)
[
返回由所述拖动对象所封装的MIME数据。
]($docs-qmimedata.html)
See also setMimeData( ) 。
QPixmap QDrag.pixmap (self)
[
返回用于表示在拖动的数据拖放操作的像素图。
]($docs-qpixmap.html)
QDrag.setDragCursor (self, QPixmap cursor, Qt.DropAction action)
设置拖动cursor为action。这使您可以复盖默认的本地游标。要恢复到使用本地光标action传递一个空QPixmap如cursor。
该action只能是CopyAction , MoveAction或LinkAction 。 DropAction的所有其他值将被忽略。
QDrag.setHotSpot (self, QPoint hotspot)
设定相对于热点的位置,以用于通过指定的点的像素图的左上角hotspot。
Note:在X11上,像素图可能无法跟上鼠标移动,如果热点直接导致光标下要显示的像素图。
See also hotSpot( ) 。
QDrag.setMimeData (self, QMimeData data)
该data说法有它的所有权转移给Qt的。
设置要发送到给定的MIME数据data。该数据的所有权被转移到QDrag对象。
See also mimeData( ) 。
QDrag.setPixmap (self, QPixmap)
Sets pixmap作为像素图用来表示在一个拖动数据拖放操作。你可以拖动操作开始之前,只设置一个像素图。
See also pixmap( ) 。
QWidget QDrag.source (self)
[
返回拖动对象的源。这是其中的拖放操作起源的部件。
]($docs-qwidget.html)
Qt.DropAction QDrag.start (self, Qt.DropActions supportedActions = Qt.CopyAction)
QWidget QDrag.target (self)
[
返回拖放操作的目标。这是一个小部件,这是拖动物体跌。
Qt Signal Documentation
void actionChanged (Qt::DropAction)
这是该信号的默认超载。
这个信号被发射时的action与拖变化有关。
]($docs-qwidget.html)
See also targetChanged( ) 。
void targetChanged (QWidget *)
这是该信号的默认超载。
这个信号被发射时的拖放操作改变目标,以newTarget新的目标。
See also target()和actionChanged( ) 。