PySide6.QtGui.QDrag¶
- class QDrag¶
-
概要¶
方法¶
def
__init__()def
defaultAction()def
dragCursor()def
exec()def
exec_()def
hotSpot()def
mimeData()def
pixmap()def
setDragCursor()def
setHotSpot()def
setMimeData()def
setPixmap()def
source()def
target()
信号¶
def
actionChanged()def
targetChanged()
静态函数¶
def
cancel()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
拖放是用户在应用程序中复制或移动数据的一种直观方式,并且在许多桌面环境中用作在应用程序之间复制数据的机制。Qt中的拖放支持主要围绕
QDrag类,该类处理拖放操作的大部分细节。拖放操作要传输的数据包含在QMimeData对象中。这是通过
setMimeData()函数以下列方式指定的:drag = QDrag(self) mimeData = QMimeData() mimeData.setText(commentEdit.toPlainText()) drag.setMimeData(mimeData)
请注意,
setMimeData()将 QMimeData 对象的所有权分配给QDrag对象。QDrag必须在堆上构造,并具有父 QObject,以确保 Qt 在拖放操作完成后可以清理。在拖动过程中,可以使用一个像素图来表示数据,并且它会随着光标移动到放置目标。这个像素图通常显示一个图标,表示正在传输的数据的MIME类型,但可以使用
setPixmap()设置任何像素图。可以使用setHotSpot()函数为光标的热点指定一个相对于像素图左上角的位置。以下代码将像素图定位,使光标的热点指向其底边的中心:drag.setHotSpot(QPoint(drag.pixmap().width()/2, drag.pixmap().height()))
注意
在X11上,如果热点导致pixmap直接显示在光标下方,pixmap可能无法跟上鼠标的移动。
源和目标部件可以通过
source()和target()找到。这些函数通常用于确定拖放操作是否在同一个部件上开始和结束,以便实现特殊行为。QDrag只处理拖放操作本身。开发者需要决定何时开始拖放操作,以及如何构造和使用QDrag对象。对于给定的部件,通常需要重新实现 mousePressEvent() 来确定用户是否按下了鼠标按钮,并重新实现 mouseMoveEvent() 来检查是否需要QDrag。另请参阅
拖放
QClipboardQMimeDataDraggable 图标 可拖动示例 文本 拖放示例 站点 示例为
dragSource指定的小部件构造一个新的拖动对象。- actionChanged(action)¶
- Parameters:
动作 –
DropAction
当与拖动相关的
action发生变化时,会发出此信号。另请参阅
- static cancel()¶
取消由Qt启动的拖放操作。
- defaultAction()¶
- Return type:
返回此拖动操作的默认建议放置动作。
另请参阅
- dragCursor(action)¶
- Parameters:
动作 –
DropAction- Return type:
返回
action的拖动光标。另请参阅
- exec([supportedActions=Qt.MoveAction])¶
- Parameters:
supportedActions –
DropAction的组合- Return type:
开始拖放操作,并在操作完成时返回一个指示请求的放置操作的值。用户可以选择的操作在
supportedActions中指定。默认的提议操作将在允许的操作中按以下顺序选择:移动、复制和链接。注意
在Linux和macOS上,拖放操作可能需要一些时间,但此函数不会阻塞事件循环。在执行操作时,其他事件仍然会传递给应用程序。在Windows上,Qt事件循环在操作期间会被阻塞。
另请参阅
- exec(supportedActions, defaultAction)
- Parameters:
supportedActions –
DropAction的组合defaultAction –
DropAction
- Return type:
开始拖放操作,并在操作完成时返回一个指示请求的放置操作的值。用户可以选择放置操作在
supportedActions中指定。defaultDropAction决定了当用户在不使用修饰键的情况下执行拖放操作时,将建议执行哪个操作。注意
在Linux和macOS上,拖放操作可能需要一些时间,但此函数不会阻塞事件循环。在执行操作时,其他事件仍然会传递给应用程序。在Windows上,Qt事件循环在操作期间会被阻塞。然而,
exec()在Windows上会导致processEvents()被频繁调用以保持GUI的响应性。如果在拖放操作活动时调用任何循环或操作,它将阻塞拖放操作。- exec_([supportedActions=Qt.MoveAction])¶
- Parameters:
supportedActions –
DropAction的组合- Return type:
- exec_(arg__1, arg__2)
- Parameters:
arg__1 –
DropAction的组合arg__2 –
DropAction
- Return type:
返回热点相对于光标左上角的位置。
另请参阅
返回由拖动对象封装的MIME数据。
另请参阅
返回用于表示拖放操作中数据的pixmap。
另请参阅
- setDragCursor(cursor, action)¶
- Parameters:
cursor –
QPixmapaction –
DropAction
设置拖动
光标为动作。这允许你覆盖默认的原生光标。要恢复使用动作的原生光标,请传入一个空的QPixmap作为光标。注意:为 IgnoreAction 设置拖动光标可能无法在所有平台上工作。已测试 X11 和 macOS 可以工作。Windows 不支持此功能。
另请参阅
设置热点相对于所使用的位图左上角的位置到由
hotspot指定的点。设置要发送到给定MIME
data的数据。数据的所有权转移到QDrag对象。另请参阅
将
pixmap设置为用于表示拖放操作中数据的位图。您只能在拖放开始之前设置位图。另请参阅
返回拖动对象的源。这是拖放操作起源的小部件。
- supportedActions()¶
- Return type:
DropAction的组合
返回此拖动操作可能的放置动作集合。
另请参阅
返回拖放操作的目标。这是拖放对象被放置的小部件。
当拖放操作的目标发生变化时,会发出此信号,
newTarget是新的目标。另请参阅