0

根据 GTK+ 参考手册,使用 gtk_tree_view_set_reorderable 将启用拖放以重新排序行。

我在 Linux 中使用 GTK+ 3 和 GTK+ 2 进行了尝试,它似乎工作正常。但是当我在 Microsoft Windows 中尝试使用 GTK+ 2.24.0 时,我只能拖动行而不能放下它们。

我使用 Ubuntu Linux 11.04(带有 Gnome 3 Desktop)和 Microsoft Windows XP Service Pack 3 对其进行了测试。

除了将 reorderable 设置为 TRUE 之外,我还需要在 Microsoft Windows 中执行其他操作吗?

这是我用来测试的一个简单程序:

#include <gtk/gtk.h>

enum
{
   TITLE_COLUMN,
   N_COLUMNS
};

int
main (int argc, char* argv[])
{
    gtk_init (&argc, &argv);

    GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
    g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

    GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Ubuntu", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Fedora", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Debian", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Arch Linux", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Mandriva", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Gentoo", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "openSUSE", -1);
    gtk_list_store_insert_with_values (store, NULL, -1, TITLE_COLUMN, "Slackware", -1);

    GtkWidget* tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
    gtk_tree_view_set_reorderable (GTK_TREE_VIEW (tree), TRUE);
    gtk_container_add (GTK_CONTAINER (window), tree);

    g_object_unref (G_OBJECT (store));

    GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("Linux Distribution",
        gtk_cell_renderer_text_new (),
        "text", TITLE_COLUMN,
        NULL);
    gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);

    gtk_widget_show_all (window);

    gtk_main ();

    return 0;
}
4

1 回答 1

1

这可能是 Windows GTK+ 端口中的一个错误。GTK+的主要开发集中在Linux和其他X11平台上,而对Windows和Mac OS的移植肯定没有受到太多关注。

您可能希望将此问题发布到 GTK+ 邮件列表。如果您没有得到合理的答案,您应该提交错误报告。

于 2011-08-01T00:00:24.753 回答