ftk学习记(label篇)
【 声明:版权全部,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
还是接着上面的一篇博文。
之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的。所以,这里我们上传一下图片。
由于还是编辑模式。所以临时还不能看到图片在网页中是怎么显示的。
只是没有关系,这次仅仅是做一个最初的尝试。假设大家有更好的意见,最好还是用微信扫一下头像或者私信给我,就能够了。
前面的代码还是比較简单的。今天,我们来学习一下label的显示方法。当然,无论大家是做windows phone、android app、ios,怎样编写gui都是一个基本功课。这些gui显示的方法大同小异。假设有心学习一下ftk。其它的移动app相信也不在话下。只是,由于移动应用开发的语言不太一样,有c sharp。 有java,有object c。所以差异性多少还是有点的。
label,顾名思义,就是一个标签。更直白一点,就是在窗体上某个地点显示一串文字。当然。你能够依据自己的须要灵活改动文字的类型、大小、颜色、背景等信息。总之就是这么个意思。闲话少说,我们能够看看demo下label代码是怎么编写的。相同,今天仅仅会展示代码的内容,详细显示的效果还要等待以下一篇文章。
#include "ftk.h" typedef struct _TimerInfo
{
int times;
FtkWidget* label;
}TimerInfo; static Ret timeout(void* ctx)
{
TimerInfo* info = ctx;
char buffer[32] = {0};
if(info->times > 0)
{
snprintf(buffer, sizeof(buffer), "Quit after %d seconds", info->times);
ftk_widget_set_text(info->label, buffer);
info->times--; return RET_OK;
}
else
{
ftk_quit();
ftk_logd("%s: timeout and quit.\n", __func__); return RET_REMOVE;
}
} int main(int argc, char* argv[])
{
int width = 0;
int height = 0;
FtkGc gc = {.mask = FTK_GC_BG};
TimerInfo info = {.times=5, };
ftk_init(argc, argv); FtkSource* timer = ftk_source_timer_create(1000, timeout, &info);
FtkWidget* win = ftk_app_window_create(); width = ftk_widget_width(win);
height = ftk_widget_height(win); FtkWidget* label = ftk_label_create(win, 10, 10, width - 20, 20);
ftk_widget_set_text(label, "中文文本"); label = ftk_label_create(win, 10, 40, width - 20, 20);
ftk_widget_set_text(label, "English Text");
assert(strcmp(ftk_widget_get_text(label), "English Text") == 0); gc.bg.a = 0xff;
gc.bg.r = 0xF0;
gc.bg.g = 0xF0;
gc.bg.b = 0x80;
label = ftk_label_create(win, 10, height/2, width - 20, 120);
ftk_widget_set_gc(label, FTK_WIDGET_INSENSITIVE, &gc);
ftk_widget_unset_attr(label, FTK_ATTR_TRANSPARENT);
ftk_widget_set_text(label, "中英文混合多行文本显示:the linux mobile development.带有背景颜色。"); label = ftk_label_create(win, 50, height/2-30, width, 20);
info.label = label; ftk_widget_set_text(win, "label demo");
ftk_widget_show_all(win, 1); ftk_widget_set_attr(win, FTK_ATTR_IGNORE_CLOSE);
ftk_main_loop_add_source(ftk_default_main_loop(), timer); ftk_run(); return 0;
}
代码的内容,不是非常多,大约有个70行左右。
開始,相同首先初始化ftk,调用了ftk_init函数。在函数结尾的地方,代码也调用了ftk_run函数。
这些都是代码的基本流程。仅仅要你是用的是ftk。都须要遵守这个流程。中间的内容都是自己加入的。
继续分析,我们观察一下,代码都做了些什么。细细想来,事实上逻辑都差点儿相同。依次往下看,代码创建了一个win控件,进而在win上插入了4个label控件。它们各自是中文文本、English Text、中英文混合多行文本显示、暂时label。
除此之外,代码中还出现了一个timer,每隔一段时间,它都会调用timeout这个函数。这个函数做了什么啊,从10行開始往下看。事实上就是定时显示一段文字。告诉我们窗体离quit还有几秒。假设超时了呢,当然就会调用ftk_quit这个函数,ftk在释放完一些资源后就结束了。
这个流程不复杂。还没有搞清楚的朋友能够继续看一下代码。下次,再发布代码的执行效果。
ftk学习记(label篇)的更多相关文章
- ftk学习记(label篇)【转】
转自:http://blog.csdn.net/feixiaoxing/article/details/25000093 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎 ...
- ftk学习记(消息框篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 上一篇说到了输入框.闲话不多说,首先看结果显示, 大家看看效果是不是和我们之前说的一样.今天, ...
- ftk学习记(首篇)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的g ...
- ftk学习记(icon篇)
[声明:版权全部,欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在開始今天的文章之前.我们还是先看一下上一节的效果图. 大家能够參照上一节的解说,是不是存在这种 ...
- ftk学习记(对话框篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面谈到了输入法,首先看一看效果. 上面有4个输入框,大家能够分别试试,看看效果怎样. 今天,我 ...
- ftk学习记(滑动条篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前一篇说到了combox.就先看一下效果吧. 说完了combox,就谈谈今天的滑动条.滑动条,当然 ...
- ftk学习记(combox篇)
[声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 上一篇文章谈到了多窗体,还是依照约定看一下效果是什么样的. 假设大家细心一点.就会发现窗体中的l ...
- ftk学习记(输入框篇)
[ 声明:版权全部.欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 昨天讲了进度条,我们还是看看它的运行效果是怎么样的.截图例如以下, 进度条使用的情况还是比較多的 ...
- ftk学习记(waitbox篇)
[声明:版权全部.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...
随机推荐
- leetcode排列组合相关
目录 78/90子集 39/40组合总和 77组合 46/47全排序,同颜色球不相邻的排序方法 78/90子集 输入: [1,2,2] 78输出: [[], [1], [2], [1 2], [2], ...
- hdu2089不要62(数位dp)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Django day17 博客项目(一)
一: 博客项目需求分析 首页(显示文章) 文章详情 点赞, 点踩 文章评论 字评论 评论的展示 登录功能(图片验证码) 注册功能(基于form验证,ajax) 个人站点(不同人不同样式,文章过滤) 后 ...
- POJ 3635 优先队列BFS
(感谢lyd学长的幻灯片) 注意vis数组的应用 在vis[i][j]中 i表示到了第i个点 j表示还剩j升油 vis[i][j]表示最小话费. 这样只需搜到话费比它少的更新入堆就OK了 //By: ...
- Dijkstra TYVJ 1031热浪 Dijkstra测试数据
测试用邻接表写得Dijkstra 代码写得很烂. 描述 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer Jo ...
- CentOS6 在线安装PostgreSQL10
本文主要通过实际案例介绍如何在CentOS6环境中在线安装PostgreSQL10,安装环境需具备能够使用yum在线安装功能.具体安装步骤如下, 1 下载对应版本的PGDG文件 从https://yu ...
- # Nginx设置浏览器缓存
配置语法 在location或if段里,来写. 格式 expires 30s; expires 30m; expires 2h; expires 30d; (注意:服务器的日期要准确,如果服务器的日期 ...
- 酷派改变者S1(C105/C105-6/C105-8) 解锁BootLoader 并刷入recovery root
首先下载好工具链接:https://pan.baidu.com/s/1qZjOCUw 密码:u2dr 备用下载链接:https://pan.baidu.com/s/1pMlmAef 本篇教程教你如何傻 ...
- PHP CURL的几种用法
1.抓取无访问控制文件 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/ ...
- Vs工程高版本向低版本迁移
使用到一个SLAM程序,一些运行库是基于PCL1.7.2Vs11版本,但是Vs11巨慢,应该把程序迁移到Vs10 下面,遇到打不开的问题. 1.修改方法: 参考链接:使用低版本打开高版本VS解决方案 ...