首页 > 代码库 > 布局练习之计算器

布局练习之计算器

接下来,我们做一个布局练习,如下图:

技术分享


我们用表格布局实现,表格布局参考坐标如下:

技术分享


这里我们用到行编辑控件( GtkEntry )。

行编辑的创建:

GtkWidget * gtk_entry_new(void);

返回值:行编辑指针行


编辑内容的设置:

void gtk_entry_set_text (GtkEntry *entry,

const gchar *text);

entry: 行编辑

text: 需要设置的内容


设置行编辑是否允许编辑:

void gtk_editable_set_editable(GtkEditable *editable,

gboolean is_editable);

editable:行编辑

is_editable:TRUE代表可编辑,FALSE不允许编辑


完整代码如下:

#include <gtk/gtk.h> 	// 头文件

int main( int   argc, char *argv[] ) 
{
	gtk_init (&argc, &argv); 	// 初始化
	
	// 窗口的操作
	GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 	 // 创建窗口 
	gtk_widget_set_size_request(window, 270, 320);
	
	// 表格的操作
	GtkWidget *table = gtk_table_new(5, 4, TRUE);   // 表格布局,5行4列  
	
	// 行编辑的操作
	GtkWidget *entry = gtk_entry_new();		// 行编辑的创建
	gtk_entry_set_text(GTK_ENTRY(entry), "2+2=4");	// 给行编辑设置内容
	gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE);// 设置行编辑不允许编辑,只做显示用
	
	// 按钮的操作
	GtkWidget *button0 = gtk_button_new_with_label("0");	// 按钮0
	GtkWidget *button1 = gtk_button_new_with_label("1");	// 按钮1
	GtkWidget *button2 = gtk_button_new_with_label("2");	// 按钮2
	GtkWidget *button3 = gtk_button_new_with_label("3");	// 按钮3
	GtkWidget *button4 = gtk_button_new_with_label("4");	// 按钮4
	GtkWidget *button5 = gtk_button_new_with_label("5");	// 按钮5
	GtkWidget *button6 = gtk_button_new_with_label("6");	// 按钮6
	GtkWidget *button7 = gtk_button_new_with_label("7");	// 按钮7
	GtkWidget *button8 = gtk_button_new_with_label("8");	// 按钮8
	GtkWidget *button9 = gtk_button_new_with_label("9");	// 按钮9
	GtkWidget *button_add = gtk_button_new_with_label("+");			// 加
	GtkWidget *button_minus = gtk_button_new_with_label("-");	 	// 减
	GtkWidget *button_multiply = gtk_button_new_with_label("*");	// 乘
	GtkWidget *button_divide = gtk_button_new_with_label("/");		// 除
	GtkWidget *button_equal = gtk_button_new_with_label("=");		// 等于
	GtkWidget *button_detele = gtk_button_new_with_label("c");		// 退格
	
	// 布局操作
	gtk_container_add(GTK_CONTAINER(window), table); // 表格放入窗口 
	gtk_table_attach_defaults(GTK_TABLE(table), entry, 0, 4, 0, 1);	// 行编辑放入表格
	gtk_table_attach_defaults(GTK_TABLE(table), button0, 0, 1, 4, 5);// 按钮放入表格
	gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(table), button3, 2, 3, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(table), button4, 0, 1, 2, 3);
	gtk_table_attach_defaults(GTK_TABLE(table), button5, 1, 2, 2, 3);
	gtk_table_attach_defaults(GTK_TABLE(table), button6, 2, 3, 2, 3);
	gtk_table_attach_defaults(GTK_TABLE(table), button7, 0, 1, 1, 2);
	gtk_table_attach_defaults(GTK_TABLE(table), button8, 1, 2, 1, 2);
	gtk_table_attach_defaults(GTK_TABLE(table), button9, 2, 3, 1, 2);
	gtk_table_attach_defaults(GTK_TABLE(table), button_add, 1, 2, 4, 5);
	gtk_table_attach_defaults(GTK_TABLE(table), button_minus, 2, 3, 4, 5);
	gtk_table_attach_defaults(GTK_TABLE(table), button_multiply, 3, 4, 2, 3);
	gtk_table_attach_defaults(GTK_TABLE(table), button_divide, 3, 4, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(table), button_equal, 3, 4, 4, 5);
	gtk_table_attach_defaults(GTK_TABLE(table), button_detele, 3, 4, 1, 2);
	

	gtk_widget_show_all(window);  // 显示所有控件
	 
	gtk_main();  //进入事件循环 
	 
	return 0; 
} 


源代码下载请点此处。

布局练习之计算器