Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 带GtkListStore的GTK按钮_C_Gtk - Fatal编程技术网

C 带GtkListStore的GTK按钮

C 带GtkListStore的GTK按钮,c,gtk,C,Gtk,我试图将GTK按钮添加到GtkListStore以编辑每行中的数据。。。该按钮没有出现,我收到以下错误消息:“GLib GObject WARNING**:无法从'GtkButton'类型的值设置类型为gchararray'的属性text”。 这是我的密码: #include <gtk/gtk.h> GtkTreeModel * create_and_fill_model() { GtkListStore *store; GtkTreeIter iter; store = g

我试图将GTK按钮添加到GtkListStore以编辑每行中的数据。。。该按钮没有出现,我收到以下错误消息:“GLib GObject WARNING**:无法从'GtkButton'类型的值设置类型为gchararray'的属性
text”。
这是我的密码:

#include <gtk/gtk.h>
GtkTreeModel * create_and_fill_model()
{
GtkListStore  *store;
GtkTreeIter    iter;
store = gtk_list_store_new (9,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_UINT,
                            G_TYPE_FLOAT,
                            GTK_TYPE_BUTTON);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
                    0, "A5525654",
                    1, "DFFFCCN",
                    2, "Doe",
                    3, "John",
                    4, "M",
                    5, "casablanca",
                    6, 2014,
                    7, 18.22,
                    8,GTK_BUTTON(gtk_button_new_with_label("EDIT")),
                    -1);
return GTK_TREE_MODEL (store);
}
GtkWidget * create_view_and_model()
{
GtkCellRenderer     *renderer;
GtkTreeModel        *model;
GtkWidget           *view;

view = gtk_tree_view_new ();
char colonne[9][16] =
{
    "CIN",
    "CNE",
    "Nom",
    "Prenom",
    "Sexe",
    "Etablissement",
    "Annee Obt",
    "Note Gener",
    "Edit"
};
int i;
for(i=0; i<9; i++)
{
    renderer = gtk_cell_renderer_text_new ();
    gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),
            -1,
            colonne[i],
            renderer,
            "text", i,
            NULL);
}
model = create_and_fill_model ();
gtk_tree_view_set_model (GTK_TREE_VIEW (view), model);
g_object_unref (model);
return view;
}
int main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *view;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "delete_event", gtk_main_quit, NULL);
view = create_view_and_model ();
gtk_container_add (GTK_CONTAINER (window), view);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
#包括
GtkTreeModel*创建和填充模型()
{
GtkListStore*商店;
GtkTreeIter iter;
商店=gtk_列表_商店_新(9,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型单元,
G_型浮球,
GTK_型按钮);
gtk列表、存储、附加(存储和iter);
gtk_列表_存储_集(存储和iter,
0,“A5525654”,
1,“DFFFCCN”,
2.“能源部”,
3.“约翰”,
4、“M”,
5,“卡萨布兰卡”,
6, 2014,
7, 18.22,
8,GTK_按钮(GTK_按钮,带有新标签(“编辑”),
-1);
返回GTK_树_模型(存储);
}
GtkWidget*创建视图和模型()
{
GtkCellRenderer*渲染器;
GTKTREE模型*模型;
GtkWidget*视图;
view=gtk_tree_view_new();
查尔科隆[9][16]=
{
“CIN”,
“CNE”,
“名称”,
“Prenom”,
“性”,
“极乐”,
“Annee Obt”,
“注1”,
“编辑”
};
int i;

对于(i=0;i在树视图中放置按钮的实现无法按书面方式工作。您正在为所有列创建文本渲染器,而文本渲染器显然无法绘制GTK按钮。(根据模型中按钮类型的列在渲染器上设置
文本
属性时出错。)


在树状视图中放置按钮的一种简单方法是在单元格中放置一个可单击的图像,如所示。

源代码:

#include <gtk/gtk.h>

GtkTreeModel * create_and_fill_model()
{
GtkListStore  *store;
GdkPixbuf     *icon;
GError        *error = NULL;
GtkTreeIter    iter;
store = gtk_list_store_new (9,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_STRING,
                            G_TYPE_UINT,
                            G_TYPE_FLOAT,
                            GDK_TYPE_PIXBUF);
gtk_list_store_append (store, &iter);
icon = gdk_pixbuf_new_from_file("edit.png", &error);
gtk_list_store_set (store, &iter,
                    0, "A5525654",
                    1, "DFFFCCN",
                    2, "Doe",
                    3, "John",
                    4, "M",
                    5, "casablanca",
                    6, 2014,
                    7, 18.22,
                    8,icon,
                    -1);
if (error)
{
    g_warning ("probleme de chargement de l'icone : %s\n", error->message);
    g_error_free(error);
    error = NULL;
}
return GTK_TREE_MODEL (store);
}
GtkWidget * create_view_and_model()
{
GtkCellRenderer     *renderer;
GtkTreeModel        *model;
GtkWidget           *view;

view = gtk_tree_view_new ();
char colonne[9][16] =
{
    "CIN",
    "CNE",
    "Nom",
    "Prenom",
    "Sexe",
    "Etablissement",
    "Annee Obt",
    "Note Gener",
    "Edit"
};
int i;
for(i=0; i<9; i++)
{
    if(i==8)
    {
        renderer = gtk_cell_renderer_pixbuf_new();
        gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),
                -1,
                colonne[i],
                renderer,
                "pixbuf", i,
                NULL);
    }
    else
    {
        renderer = gtk_cell_renderer_text_new ();
        gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),
                -1,
                colonne[i],
                renderer,
                "text", i,
                NULL);
    }
}
model = create_and_fill_model ();
gtk_tree_view_set_model (GTK_TREE_VIEW (view), model);
g_object_unref (model);
return view;
}
int main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *view;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "delete_event", gtk_main_quit, NULL);
view = create_view_and_model ();
gtk_container_add (GTK_CONTAINER (window), view);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
#包括
GtkTreeModel*创建和填充模型()
{
GtkListStore*商店;
GdkPixbuf*图标;
GError*error=NULL;
GtkTreeIter iter;
商店=gtk_列表_商店_新(9,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型_字符串,
G_类型单元,
G_型浮球,
GDK_类型_PIXBUF);
gtk列表、存储、附加(存储和iter);
icon=gdk_pixbuf_new_from_文件(“edit.png”,错误(&R);
gtk_列表_存储_集(存储和iter,
0,“A5525654”,
1,“DFFFCCN”,
2.“能源部”,
3.“约翰”,
4、“M”,
5,“卡萨布兰卡”,
6, 2014,
7, 18.22,
8,图标,
-1);
如果(错误)
{
g_警告(“icone计费问题:%s\n”,错误->消息);
g_无错误(错误);
错误=NULL;
}
返回GTK_树_模型(存储);
}
GtkWidget*创建视图和模型()
{
GtkCellRenderer*渲染器;
GTKTREE模型*模型;
GtkWidget*视图;
view=gtk_tree_view_new();
查尔科隆[9][16]=
{
“CIN”,
“CNE”,
“名称”,
“Prenom”,
“性”,
“极乐”,
“Annee Obt”,
“注1”,
“编辑”
};
int i;
对于(i=0;i