我在 gtkTreeView 控件中看不到文字,但是条目的确添加进去了。

软件和网站开发以及相关技术探讨
回复
NoIE
帖子: 65
注册时间: 2010-04-23 21:17

我在 gtkTreeView 控件中看不到文字,但是条目的确添加进去了。

#1

帖子 NoIE » 2010-05-02 12:52

tree.png
tree.png (3.36 KiB) 查看 602 次
我反复点击“开始计时”按钮,gtkTreeView的长度的确在增加,证明添加项目的程序没有问题,但是我什么文字都看不到。
我的程序只有两个文件:

代码: 全选

#include <gtk/gtk.h>

enum{
	NAME_COLUMN = 0,
	START_TIME_COLUMN,
	END_TIME_COLUMN,
	EXPEND_COLUMN,
	MAN_COLUMNS
};
//台球桌数据结构
typedef struct {
	//是否空闲
	char free;
	//使用历史,使用树状结构存储。
	GtkTreeStore *history;
}billiard_table;

//初始数组
void billiard_table_init(billiard_table array[],int len)
{
	int i;
	g_type_init();
	for(i=0;i<len;i++){
		array[i].free = TRUE;
		array[i].history = gtk_tree_store_new(
				MAN_COLUMNS, G_TYPE_STRING, G_TYPE_STRING,
				G_TYPE_STRING, G_TYPE_FLOAT);
	}
}

代码: 全选

#include "billiard_table.h"

//全局变量

 ... ...

billiard_table array_billiard_table[21];

GtkWidget *tree;

 ... ...

//计时或停止计时
void start_and_stop(GtkWidget *widget, gpointer *data)
{

 ... ...

		//将信息加入树
		GtkTreeIter iter;
		gtk_tree_store_append(
				array_billiard_table[current].history,
				&iter,
				NULL);
		gtk_tree_store_set(
				array_billiard_table[current].history,
				&iter,
				NAME_COLUMN,"新用户",
				START_TIME_COLUMN,"00:00",
				END_TIME_COLUMN,"00:00",
				EXPEND_COLUMN,00.00,-1);

 ... ...

}

 ... ...

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

 ... ...

	billiard_table_init(array_billiard_table,21);

 ... ...
	
	//树
	tree = gtk_tree_view_new();
	gtk_fixed_put(GTK_FIXED(anyone_table),tree,15,55);
	//要想让视图显示出数据,必须建立GtkCellRenderer与GtkTreeViewColumn
	GtkCellRenderer *renderer;
	GtkTreeViewColumn *column;
	//关联视图与模型
	gtk_tree_view_set_model(
			GTK_TREE_VIEW(tree),
			GTK_TREE_MODEL(array_billiard_table[current].history));
	//建立一个GtkCellRenderer 
	renderer = gtk_cell_renderer_text_new();
	//设置GtkCellRenderer的渲染方式
	g_object_set(G_OBJECT(renderer),
                 "foreground", "red",
                 NULL);
	column = gtk_tree_view_column_new();
	//将列设置为可以手动改变大小
	gtk_tree_view_column_pack_start (column, renderer, TRUE);
	gtk_tree_view_column_set_resizable(column,TRUE);
	gtk_tree_view_column_set_sizing(
			column, GTK_TREE_VIEW_COLUMN_FIXED);
	gtk_tree_view_column_set_fixed_width (column, 100);

	//将列加入gtk_tree_view
	gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);

 ... ...

}
回复