ftk學習記(輸入框篇)
阿新 • • 發佈:2017-07-07
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學習記(輸入框篇)