如何在Gtk+2.0下显示中文

软件和网站开发以及相关技术探讨
回复
头像
小鸡啄米
帖子: 34
注册时间: 2009-10-04 21:49

如何在Gtk+2.0下显示中文

#1

帖子 小鸡啄米 » 2010-11-18 9:43

我编写了一个基于Gtk+2.0的程序,编译之后发现无法显示出汉字。查了网上的方法,说用g_locale_to_utf8("中文",-1,NULL,NULL,NULL),但我试了之后,发现原先的按钮变小了,也没有显示所谓的中文,不明真相,望各位高手出手相教,谢谢。
我用的是Ubuntu 10.04 ,用gedit和vi还有vim编辑器都行。

(第36行,“计算“二字,测试而已,无关语义。)

代码: 全选

#include<gtk/gtk.h>
#include<stdio.h>
#include<string.h>
const char *password="secret";
//以下为两个回调函数
void closeApp(GtkWidget *window,gpointer data){
	gtk_main_quit();
}
void button_clicked(GtkWidget *window,gpointer data){
	const char *password_text=gtk_entry_get_text(GTK_ENTRY((GtkWidget *)data));
	if(strcmp(password_text,password)==0)
		printf("Access granted!\n");
	else
		printf("Access denied!\n");
}
int main(int argc,char *argv[]){
	GtkWidget *window;
	GtkWidget *username_label,*password_label;
	GtkWidget *username_entry,*password_entry;
	GtkWidget *ok_button;
	GtkWidget *hbox1,*hbox2;
	GtkWidget *vbox;
	gtk_init(&argc,&argv);
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"GTK+Word2NumCalculater");
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_window_set_default_size(GTK_WINDOW(window),200,200);

//以下为连接回调函数
g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(closeApp),NULL);
username_label=gtk_label_new("Login:");
password_label=gtk_label_new("Password:");
username_entry=gtk_entry_new();
password_entry=gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(password_entry),FALSE);
ok_button=gtk_button_new_with_label(g_locale_to_utf8("计算",-1,NULL,NULL,NULL));
//以下为连接回调函数
g_signal_connect(GTK_OBJECT(ok_button),"clicked",GTK_SIGNAL_FUNC(button_clicked),password_entry);

//以下为利用vbox和hbox进行界面设计
hbox1=gtk_hbox_new(TRUE,5);
hbox2=gtk_hbox_new(TRUE,5);
vbox=gtk_vbox_new(FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox1),username_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox1),username_entry,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox2),password_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox2),password_entry,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),hbox1,FALSE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),hbox2,FALSE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),ok_button,FALSE,FALSE,5);
gtk_container_add(GTK_CONTAINER(window),vbox);
gtk_widget_show_all(window);
	gtk_main();
	return 0;
}
母鸡呀...
QQ:380153398
GTalk:cjj380153398@谷歌邮箱
MSN:chenjunjia1989@hotmail邮箱
个人网站:http://www.stcjj.tk
头像
i_NIX
帖子: 450
注册时间: 2008-02-11 15:46

Re: 如何在Gtk+2.0下显示中文

#2

帖子 i_NIX » 2010-11-19 18:53

ubuntu 10.10系统(中文)没有问题,有图为证!
http://paste.ubuntu.org.cn/81431
http://paste.ubuntu.org.cn/i81431
Google Talk群组,请来<雨云>一番!
主题:UbuntuLinux编程科幻、民主、科学等。
添加 rain-cloud@appspot.com 为好友(然后say hi,并等待验证)
参见 http://goo.gl/xIpxH

Twitter:http://twitter.com/nixzhu
回复