1. 程式人生 > >ftk學習記(輸入框篇)

ftk學習記(輸入框篇)

file creat 之前 egl init -s 自己 效果 ast

【 聲明:版權全部。歡迎轉載。請勿用於商業用途。

聯系信箱:feixiaoxing @163.com】


昨天講了進度條,我們還是看看它的運行效果是怎麽樣的。截圖例如以下,


技術分享


進度條使用的情況還是比較多的。只是有一種控件,我們遇到的機會很多其它。那就是輸入框。非常難想象,沒有輸入框的gui是什麽樣的。

在網上購物或者買車票的時候。非常重要的一條就是輸入自己的賬戶、password信息。所以說,沒有輸入的話,這些app都無法使用了。相同,我們能夠看一下ftk下的輸入框demo代碼是什麽樣的。


#include "ftk.h"

static Ret button_quit_clicked(void* ctx, void* obj)
{
	ftk_quit();

	return RET_OK;
}

static Ret ftk_digit_only_filter(void* ctx, void* data)
{
	FtkEvent* event = data;
	if(event->type == FTK_EVT_KEY_UP || event->type == FTK_EVT_KEY_DOWN)
	{
		int code = event->u.key.code;
		if(code >= FTK_KEY_0 && code <= FTK_KEY_9)
		{
			return RET_OK;
		}
		else if(code == FTK_KEY_UP 
			|| code == FTK_KEY_DOWN
			|| code == FTK_KEY_LEFT
			|| code == FTK_KEY_RIGHT
			|| code == FTK_KEY_BACKSPACE
			|| code == FTK_KEY_DELETE
			|| code == FTK_KEY_HOME
			|| code == FTK_KEY_END
			|| code == FTK_KEY_TAB)
		{
			return RET_OK;
		}

		return RET_REMOVE;
	}

	return RET_OK;
}

int FTK_MAIN(int argc, char* argv[])
{
	int width = 0;
	int height = 0;
	FtkWidget* win = NULL;
	FtkWidget* button = NULL;
	FtkWidget* entry  = NULL;

	ftk_init(argc, argv);

	win = ftk_app_window_create();
	width = ftk_widget_width(win);
	height = ftk_widget_height(win);
	entry = ftk_entry_create(win, 10, 30, ftk_widget_width(win) - 20, 30);
	ftk_entry_set_text(entry, "1234(digit only)");
	ftk_widget_set_event_listener(entry, ftk_digit_only_filter, NULL);

	entry = ftk_entry_create(win, 10, 80, ftk_widget_width(win) - 20, 30);
	ftk_entry_set_text(entry, "Single line editor, that means you can input a one line only.");
	
	entry = ftk_entry_create(win, 10, 130, ftk_widget_width(win) - 20, 30);
	ftk_entry_set_text(entry, "Single line editor, 也就是說你僅僅能輸入一行文字.");
	
	button = ftk_button_create(win, width/4, 3*height/4, width/2, 60);
	ftk_widget_set_text(button, "quit");
	ftk_button_set_clicked_listener(button, button_quit_clicked, win);
	ftk_window_set_focus(win, button);

	ftk_widget_set_text(win, "entry demo");
	ftk_widget_show_all(win, 1);
	ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE);

	ftk_run();

	return 0;
}


這段74行的代碼結構還是比較清晰的。除了一如既往的ftk_init和ftk_run兩個函數外,大家還看到了3個entry的創建和1個button的創建。button的內容。之前已經討論過,這裏略過不談。

我們僅僅關註entry的內容。


3個entry中,後兩個差點兒相同,僅僅有第1個有些區別。

我們看到,第1個entry除了正常的屬性設置之外。另一個回調函數。也就是ftk_digit_only_filter。這個函數告訴系統,除了數字和一些方向鍵、控制鍵之外,其它的輸入統統忽略。

通俗一點說,這個entry中僅僅認數字。其它兩個entry則沒什麽限制。輸入字母、符號都沒有什麽問題。


好了。今天就說這麽多。

想看效果怎樣。敬請期待下一篇博文吧。





ftk學習記(輸入框篇)