拖放函数@GTK+ 2.0 中文教程连载

属性

拖动数据有下面的这些属性:

拖 动行为的意义很明显,它们指定构件是否能以指定的行为来拖动,比如GDK_ACTION_COPY 和/或GDK_ACTION_MOVE。GDK_ACTION_COPY将是一个典型的拖放,它的源数据并不会被删除,而GDK_ACTION_MOVE 将和GDK_ACTION_COPY一样,只是“建议”在接收信号处理函数调用之后将源数据删除掉。还有一些附加的拖动行为包括 GDK_ACTION_LINK等,当你对拖放的使用达到更高水平时,你可能会使用到。

客户端指定的任意拖放类型要更加灵活些,因为你的程序将明确地定义和检测它。你需要指定一个名称和/或数字以设置目的构件能接收的特定拖放类型。用一个名称要可靠些,因为其它应用程序可能也正好用了同样的数字来区别它的完全不同的类型。

发送和接收的数据格式类型(selection target )只在请求和接收数据处理函数中使用。术语selection target 有些容易令人误解。它应该是一个适合在 GTK+ 选中区(剪切/复制和粘贴)中使用的术语。selection target 实际是指被发送和接收的数据的格式类型(比如GdkAtom, integer, 或string)。你的请求数据处理函数必须指定它发送出去的数据的类型(selection target ),同时接收数据处理函数要处理接收到的数据的类型(selection target )。

 

函数

源构件上的信号

在一个拖放操作中源构件将被发送下面的这些信号。

Table 1. 源构件的信号

drag_beginvoid (*drag_begin)(GtkWidget *widget, GdkDragContext *dc, gpointer data)
drag_motiongboolean (*drag_motion)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data)
drag_data_getvoid (*drag_data_get)(GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *selection_data, guint info, guint t, gpointer data)
drag_data_deletevoid (*drag_data_delete)(GtkWidget *widget, GdkDragContext *dc, gpointer data)
drag_dropgboolean (*drag_drop)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data)
drag_endvoid (*drag_end)(GtkWidget *widget, GdkDragContext *dc, gpointer data)

设置目的构件

gtk_drag_dest_set() 指定这个构件可以接收拖动并指定它能接收的拖动的类型。

gtk_drag_dest_unset() 指定构件不再能接收拖动了。

void gtk_drag_dest_set( GtkWidget            *widget,
GtkDestDefaults flags,
const GtkTargetEntry *targets,
gint n_targets,
GdkDragAction actions );

void gtk_drag_dest_unset( GtkWidget *widget );

目的构件上的信号

在一个拖放操作中目的构件将被发送下面的这些信号。

Table 2. 目的构件的信号

drag_data_receivedvoid (*drag_data_received)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data)

<<< Previous Home Next >>>
属性Up GLib
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值