【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
昨天讲了进度条,我们还是看看它的执行效果是怎么样的。截图如下,
进度条使用的情况还是比较多的。不过有一种控件,我们遇到的机会更多。那就是输入框。很难想象,没有输入框的gui是什么样的。在网上购物或者买车票的时候,很重要的一条就是输入自己的账户、密码信息。所以说,没有输入的话,这些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则没什么限制,输入字母、符号都没有什么问题。
好了,今天就说这么多。想看效果如何,敬请期待下一篇博文吧。