Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Gtk3中带有CSS的GtkTreeView_Css_Gtk3 - Fatal编程技术网

Gtk3中带有CSS的GtkTreeView

Gtk3中带有CSS的GtkTreeView,css,gtk3,Css,Gtk3,如何使用CSS for Gtk3使GtkTreeView中的每一行具有不同的颜色? 我尝试过使用:偶数行颜色,-GtkWidget偶数行颜色和GtkTreeView行:第n个子行(偶数)。我在Ubuntu natty上使用gtk+-3.2.3 /*编译时使用:gcc-Wall-o tree1`pkg config--cflags--libs gtk+-3.0`tree1.c*/ #包括 枚举 { 列表项=0, N_列 }; 静态空隙 初始列表(GtkWidget*列表) { GtkCellRen

如何使用CSS for Gtk3使GtkTreeView中的每一行具有不同的颜色? 我尝试过使用:偶数行颜色,-GtkWidget偶数行颜色和GtkTreeView行:第n个子行(偶数)。我在Ubuntu natty上使用gtk+-3.2.3

/*编译时使用:gcc-Wall-o tree1`pkg config--cflags--libs gtk+-3.0`tree1.c*/
#包括
枚举
{
列表项=0,
N_列
};
静态空隙
初始列表(GtkWidget*列表)
{
GtkCellRenderer*渲染器;
GtkTreeViewColumn*列;
GtkListStore*商店;
/********************CSS*****************************************************/
gtkcsprovider*provider=gtk_css_provider_new();
gtk_css_提供程序_从_数据加载_(提供程序,“GtkTreeView{\n”
“-GtkWidget偶数行颜色:绿色;\n”
“颜色:白色;\n”
“}\n”,-1,空);
GdkDisplay*display=gdk_display_get_default();
GdkScreen*screen=gdk_显示_获取_默认_屏幕(显示);
gtk_样式_上下文_添加_提供程序_用于屏幕(屏幕,
GTK_样式_提供程序(提供程序),
GTK_样式_提供程序_优先级_应用程序);
g_object_unref(提供者);
/*********************************************************************************/
renderer=gtk_cell_renderer_text_new();
column=gtk_tree_view_column_new_带有_属性(“列表项”,
渲染器,“文本”,列表项,空);
gtk树视图附加列(gtk树视图(列表),列);
store=gtk_列表_store_新(N_列,G_类型_字符串);
gtk树视图集模型(gtk树视图(列表)、gtk树模型(存储));
g_object_unref(商店);
}
静态空隙
将_添加到_列表(GtkWidget*列表,const gchar*str)
{
GtkListStore*商店;
GtkTreeIter iter;
存储=GTK_列表_存储(GTK_树_视图_获取_模型
(GTK_树视图(列表));
gtk列表、存储、附加(存储和iter);
gtk列表存储集(存储、iter、列表项、str、-1);
}
已更改上的无效(GtkWidget*小部件,gpointer标签)
{
GtkTreeIter iter;
GTKTREE模型*模型;
字符*值;
如果(gtk_树_选择_获取_选择(
GTK_树(小部件、模型和iter){
gtk树模型获取(模型、iter、列表项和值,-1);
gtk_标签_设置_文本(gtk_标签(标签),值);
g_自由(价值);
}
}
int main(int argc,char*argv[])
{
GtkWidget*窗口;
GtkWidget*列表;
GtkWidget*vbox;
GtkWidget*标签;
GTK选举*选择;
gtk_init(&argc,&argv);
窗口=gtk_窗口_新建(gtk_窗口_顶层);
gtk_窗口设置位置(gtk_窗口(窗口)、gtk_WIN_位置中心);
gtk_容器_设置_边框_宽度(gtk_容器(窗口),10);
gtk_小部件_设置_大小_请求(窗口,270,250);
gtk_窗口_设置_标题(gtk_窗口(窗口),“列表视图”);
list=gtk_tree_view_new();
gtk树视图设置标题可见(gtk树视图(列表),错误);
vbox=gtk_vbox_new(FALSE,0);
gtk_-box_-pack_-start(gtk_-box(vbox),列表,真,真,5);
标签=gtk_标签_新(“”);
gtk_标签设置对齐(gtk_标签(标签),gtk_对齐中心);
gtk_盒包装开始(gtk_盒(vbox),标签,假,假,5);
gtk_容器添加(gtk_容器(窗口),vbox);
初始列表(列表);
将_添加到_列表(列表,“第一”);
将_添加到_列表(列表,“第二”);
将_添加到_列表(列表,“第三”);
将_添加到_列表(列表,“第四”);
将_添加到_列表(列表,“第五”);
选择=gtk_树_视图_获取_选择(gtk_树_视图(列表));
g_信号_连接(选择“已更改”,
G_回调(在_更改时),标签);
g_信号连接(g_对象(窗口),“销毁”,
G_回调(gtk_main_quit),NULL);
gtk_小部件_全部显示(窗口);
gtk_main();
返回0;
}

您可能必须首先启用交替颜色,包括:

gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(list), TRUE);

我不确定这一点,因为我还没有玩过GTK 3 CSS。

列标题实际上是一个按钮。它现在可以使用以下更改:

gtk_css_provider_load_from_data (provider, "column-header .button {\n"
                                         "  background-color: green;\n"
                                         "  color: red;\n"
                                         "}\n", -1, NULL);

gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), TRUE);

我在这里找到了它:

但是有一件事,不管有没有你的代码,如果我将gtk_tree_view_set_headers_visible设置为TRUE,然后尝试设置列标题的颜色,什么都不会发生。我不知道。这可能是因为该属性尚未实现。试着看看GTK源代码?GTK源代码没有任何帮助。文档中提到了属性“column header”,我只是不知道如何应用它。