类
GtkDropTargetAsync
描述 [src]
final class Gtk.DropTargetAsync : Gtk.EventController
{
/* No available fields */
}
GtkDropTargetAsync
是一个事件控制器,用于异步接收拖放操作。
与 GtkDropTarget
相比,它是一种更完整但更复杂的方法来处理拖放操作,只有在 GtkDropTarget
无法提供所需的所有功能时才应使用它。
若要使用 GtkDropTargetAsync
在小部件上接收拖放操作,可以创建一个 GtkDropTargetAsync
对象,配置支持的数据格式和操作,连接到它的信号,然后使用 gtk_widget_add_controller()
将它附加到小部件。
在拖动操作期间,GtkDropTargetAsync
发出的第一个信号是 GtkDropTargetAsync::accept
,它旨在确定目标是否是正在进行的拖放操作的可能放置点。::accept 信号的默认处理程序在找到兼容的数据格式和两边都支持的操作时接受拖放操作。
如果它是这样,并且小部件成为目标,你将收到一个 GtkDropTargetAsync::drag-enter
信号,接着是 GtkDropTargetAsync::drag-motion
信号(当指针移动时),可选地还有一个 GtkDropTargetAsync::drop
信号(当发生拖放操作时),最后是 GtkDropTargetAsync::drag-leave
信号(当指针移出小部件时)。
::drag-enter 和 ::drag-motion 处理程序返回一个 GdkDragAction
以更新正在进行的操作的状态。::drop 处理程序应该决定它最终是否接受拖放操作,如果是,它应该发起数据传输并通过调用 gdk_drop_finish()
来完成操作。
在 ::drag-enter 和 ::drag-leave 信号之间,小部件是一个当前的拖放目标,并将接收 GTK_STATE_FLAG_DROP_ACTIVE
状态,主题可以使用此状态将小部件设计为拖放目标。
实例方法
从 GtkEventController(13)继承的方法
gtk_event_controller_get_current_event
返回当前由控制器处理的事件。
gtk_event_controller_get_current_event_device
返回当前由控制器处理的事件的设备。
gtk_event_controller_get_current_event_state
返回当前由控制器处理的事件的修饰符状态。
gtk_event_controller_get_current_event_time
返回当前由控制器处理的事件的时间戳。
gtk_event_controller_get_name
获取controller
的名称。
gtk_event_controller_get_propagation_limit
获取事件控制器的传播限制。
gtk_event_controller_get_propagation_phase
获取controller
处理事件时所在的传播阶段。
gtk_event_controller_get_widget
返回该控制器关联的GtkWidget
。
gtk_event_controller_reset
将controller
重置为干净状态。
gtk_event_controller_set_name
设置可用于调试的控制器的名称。
gtk_event_controller_set_propagation_limit
设置事件控制器上的事件传播限制。
gtk_event_controller_set_propagation_phase
设置控制器处理事件所在的传播阶段。
gtk_event_controller_set_static_name
设置可用于调试的控制器的名称。
since: 4.8
属性
从 GtkEventController(4)继承的属性
Gtk.EventController:name
该控制器的名称,通常用于调试目的。
Gtk.EventController:propagation-limit
该控制器将处理的事件的限制。
Gtk.EventController:propagation-phase
该控制器将处理事件的传播阶段。
Gtk.EventController:widget
接收控制器将处理的GdkEvents
的小部件。
信号
从 GObject(1)继承的信号
GObject::notify
当对象的属性通过 g_object_set_property()、g_object_set()、et 等设置其值时,notify 信号在对象上发出。