GTK(GIMP Toolkit)是一个Linux平台下基于Xwindow图形窗口的图形用户编程接口工具,可以借助它来开发Linux平台下基于Xwindow的图形用户界面。通俗点讲,和java中的swing图形开发工具包类似它注册完全免费,所以用来开发自由软件或商业软件都不需要花费什么。现在很多Linux集成系统都已经将GTK12版本打包进去了。包括RedHat Linux 60以上版本,还有中文化的Turbo Linux等等。它也越来越被普遍的应用于UNIX系统编程
我不清楚VC是如何的,拖放文件打开,是从GNOME的文件管理器naulitus中拖的吗。
我实现了一个简单的,不知道是不是你要的。
这个程序可以从naulitus中拖一个文件到窗口的GtkEntry中,
然后文件路径会被显示在GtkEntry中,并且使用系统默认程序打开该文件。
源代码如下,如果有什么问题再问吧。
#include <gtk/gtkh>
/ 必须有这个,不然on_drag_data_received会调用两次
具体为什么我也不清楚,暂时就用这个方法来屏蔽掉一次
/
static gboolean on_drag_drop()
{
return TRUE;
}
static void on_drag_data_received(GtkWidget widget,
GdkDragContext context,
gint x,gint y,
GtkSelectionData data,
guint info,
guint time,
gpointer user_data)
{
GdkAtom atom=gtk_selection_data_get_data_type(data);
if(gtk_targets_include_uri(&atom,1)){
gchar uris=gtk_selection_data_get_uris(data);
gint i=0;
while(uris[i]!=NULL){
g_printf("%s\n",uris[i]);
i++;
}
gtk_entry_set_text(GTK_ENTRY(widget),uris[0]);
/ 使用默认程序打开 /
g_app_info_launch_default_for_uri(uris[0],NULL,NULL);
g_strfreev(uris);
}
gtk_drag_finish(context,TRUE,TRUE,time);
}
int main(int argc,char argv[])
{
gtk_init(&argc,&argv);
GtkWidget window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),380,160);
g_signal_connect(G_OBJECT(window),"destroy",
G_CALLBACK(gtk_main_quit),NULL);
GtkWidget entry=gtk_entry_new();
GtkTargetEntry targets={
"text/uri-list",
GTK_TARGET_OTHER_APP,
1
};
gtk_drag_dest_set(entry,
GTK_DEST_DEFAULT_DROP,
&targets,1,
GDK_ACTION_COPY);
g_signal_connect(G_OBJECT(entry),"drag-data-received",
G_CALLBACK(on_drag_data_received),NULL);
g_signal_connect(G_OBJECT(entry),"drag-drop",
G_CALLBACK(on_drag_drop),NULL);
gtk_container_add(GTK_CONTAINER(window),entry);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Windows下也可以使用gtk+编程,就像widows下也可以使用qt编程一样,不同的是,qt是基于c++的类,和在windows下配置qt开发环境相比,配置gtk要简单的多,当然,其实两样都一样的简单,只不过在安装qt时我遇到了版本号的问题,不过从时间上来说gtk的安装也更省时间点,包括从下载的库来看gtk都比qt小得多,好吧,说了一些乱七八糟的东西,现在开始
首先得先下载gtk库,这个可以到谷歌去搜索gtk for windows好吧,还是我直接给链接吧,我不确定这个会一直有效
>
以上就是关于linux下的gtk是什么有什么用全部的内容,包括:linux下的gtk是什么有什么用、gtk拖放打开文件 在下想用Gtk实现类似于vc编程里的WM_DROPFILES功能,请G、如何在配置Windows下的GTK+开发环境 00 半瓶墨水等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)