linux下的gtk是什么有什么用

linux下的gtk是什么有什么用,第1张

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 半瓶墨水等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10167397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存