ftk学习记(icon篇)

【声明:版权全部,欢迎转载。请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

在開始今天的文章之前。我们还是先看一下上一节的效果图。

大家能够參照上一节的解说,是不是存在这种button,是不是存在这种wait_box控件,相同是不是能够看到wait_box活动的情形。当然,有条件的朋友最好自己编译一下这个demo代码。按步骤调试每一行代码。

今天,如标题所看到的。我们所学习的是icon的内容。简单一点说,此次基本的目的就是想在窗体上显示icon图像的内容。

至于怎样显示,大家能够跟着我一起看一下demo代码是怎样编写的。

#include "ftk.h"

#define IDC_TEST_BUTTON 1000
static Ret button_quit_clicked(void* ctx, void* obj)
{
	ftk_quit();

	return RET_OK;
}

static int i = 0;
static Ret button_more_clicked(void* ctx, void* obj)
{
	int j = 0;
	FtkIconViewItem item;
	FtkWidget* icon_view = ftk_widget_lookup(ctx, 100);
	item.icon = ftk_theme_load_image(ftk_default_theme(), "flag-32.png");

	for(j=0; j < 4; j++)
	{
		char text[100] = {0};
		ftk_snprintf(text, sizeof(text), "%d", i);
		item.text = text;
		ftk_bitmap_ref(item.icon);
		item.user_data = (void*)i;
		ftk_icon_view_add(icon_view, &item);
		i+=1000;
	}
	ftk_bitmap_unref(item.icon);

	return RET_OK;
}

static Ret item_clicked(void* ctx, void* obj)
{
	FtkIconViewItem* item = obj;

	ftk_logd("%s: %s: user_data=%d\n", __func__, item->text, item->user_data);

	return RET_OK;
}

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

	win = ftk_app_window_create();
	width = ftk_widget_width(win);
	height = ftk_widget_height(win);

	button = ftk_button_create(win, 10, 0, width/3-10, 60);
	ftk_widget_set_text(button, "more");
	ftk_button_set_clicked_listener(button, button_more_clicked, win);
	ftk_window_set_focus(win, button);

	button = ftk_button_create(win, 2*width/3, 0, width/3-10, 60);
	ftk_widget_set_text(button, "quit");
	ftk_button_set_clicked_listener(button, button_quit_clicked, win);
	ftk_window_set_focus(win, button);

	item.icon = ftk_theme_load_image(ftk_default_theme(), "flag-32.png");
	icon_view = ftk_icon_view_create(win, 5, 70, width-10, height-80);
	ftk_widget_set_id(icon_view, 100);
	ftk_icon_view_set_clicked_listener(icon_view, item_clicked, win);
	for(; i < 4; i++)
	{
		char text[100] = {0};
		ftk_snprintf(text, sizeof(text), "%d", i);
		item.text = text;
		item.user_data = (void*)i;
		ftk_icon_view_add(icon_view, &item);
	}

	ftk_bitmap_unref(item.icon);
	ftk_widget_set_text(win, "icon view demo");
	ftk_widget_show_all(win, 1);
	ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE);

	ftk_run();

	return 0;
}

如代码所看到的,系统在进行的必要的初始化之后,就立即创建了button控件、 icon_view、item等对象。

button对象,我们之前已经讨论过非常多次了,这次忽略不考虑。此次主要学习的是icon_view这个对象。它的主要目的就是在window中创建一片icon_view空间。创建成功之后。我们就能够通过函数ftk_icon_view_add向里面加入item对象了。是不是非常easy呢?那button这里是起什么作用呢,我们能够继续往下看。假设细致看一下,大家能够发现button_more_clicked中的内容和main函数中的内容差点儿相同,无非就是向icon_view对象中多加入了几个item而已。

当然,每一个item在被选中的时候。系统都会调用call back函数item_clicked进行必要的额外操作。

欲看效果怎样。且听下回分解。

时间: 2024-10-05 00:21:59

ftk学习记(icon篇)的相关文章

ftk学习记(label篇)【转】

转自:http://blog.csdn.net/feixiaoxing/article/details/25000093 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文.之前曾经答应过大家,让大家看一下最简单的ftk程序是怎么运行的.所以,这里我们上传一下图片. 因为还是编辑模式,所以暂时还不能看到图片在网页中是怎么显示的.不过没有关系,这次只是做一个最初的尝试

ftk学习记(首篇)

[ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的gui的代码非常感兴趣.所以在我闲暇的时候也会拿来看一看.从整个project来看,代码非常工整.平台移植也方便.所以有兴趣的同学能够看一看. 一般对于一个开源项目.要深入地參与当中都要经历几个过程,这各自是使用.阅读.改动.重构. 大多数公司里面也会使用到开源项目,可是往往停留在使用的阶段. 所以.

ftk学习记(label篇)

[ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文. 之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的.所以,这里我们上传一下图片. 由于还是编辑模式.所以临时还不能看到图片在网页中是怎么显示的. 只是没有关系,这次仅仅是做一个最初的尝试.假设大家有更好的意见,最好还是用微信扫一下头像或者私信给我,就能够了. 前面的代码还是比較简单的.今天,我们来学习一下label的显示方法.当然,无论大家是做windo

ftk学习记(输入框篇)

[ 声明:版权全部.欢迎转载.请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 昨天讲了进度条,我们还是看看它的运行效果是怎么样的.截图例如以下, 进度条使用的情况还是比較多的.只是有一种控件,我们遇到的机会很多其它.那就是输入框.非常难想象,没有输入框的gui是什么样的. 在网上购物或者买车票的时候.非常重要的一条就是输入自己的账户.password信息.所以说,没有输入的话,这些app都无法使用了.相同,我们能够看一下ftk下的输入框demo代码是什么样的. #inc

ftk学习记(waitbox篇)

[声明:版权全部.欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相似于一个通讯录的输入功能,大家能够和之前的脚本对比起来看,检查一下是不是这种. 如题所看到的,今天所看到的的是waitbox.它出现的场合,通常是交互时间比較长的情况.比方说信用卡付款,游戏登陆等等.闲话不多.直接上demo代码. #include "ftk.h" static Ret b

ftk学习记(combox篇)

[声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 上一篇文章谈到了多窗体,还是依照约定看一下效果是什么样的. 假设大家细心一点.就会发现窗体中的label显示为window01,这事实上是由于我们已经添加了一个窗体,有兴趣的朋友能够尝试编译一下.如题所看到的,今天讨论的是combox.所谓的combox,事实上就是从给出的若干个选择挑选出一个就可以. 闲话少说,还是看代码. #include "ftk.h" #define IDC_

ASP.NET MVC学习之过滤器篇(2)

下面我们继续之前的ASP.NET MVC学习之过滤器篇(1)进行学习. 3.动作过滤器 顾名思义,这个过滤器就是在动作方法调用前与调用后响应的.我们可以在调用前更改实际调用的动作,也可以在动作调用完成之后更改最终返回的结果,当然很多人一定不太明白这个到底可以干什么, 下面我们举一个比较实际的例子: 相信理解过网站的安全的一定知道跨站请求(CSRF具体可以自行百度,这里我就不去解释了),当然也有解决方案,那就是给页面中增加一个识别码,当页面进行POST请求时,首先判断识别码是否正确, 如果正确则继

Qt学习总结-ui篇(二)

qccs定义圆角 border-radius:10px; 如果想给特定位置定义圆角,如: 左上角:border-left-top-radius:10px; 右下角色:border-right-bottom-rasius:10px; 半透明效果 只需要在css中使用rgba(100,100,100,40)这种形式来表示颜色即可. 为可执行文件添加图标 1.新建文件:finename.rc 文件名无所谓,只要后缀为rc就可以. 2.编辑新建的文件,输入以下内容: IDI_ICON1 ICON DIS

Alex Fung魔方转法学习记

我学了Alex Fung魔方转法,这是一种精确的数学法,且是一种思路,一个系统解决方案,一种原理,不用死记硬背公式. 这是一篇学习记,所有用到的算法必须去原文查看具体的数学公式和Java Applet的演示.因为我还不会编程演示,所以本文不self-contained,而像是一个数学课抄录的笔记,只是记录我的学习过程. 首先,请拿纸和笔——数学公式必须自己写一遍,自己推导一遍,使得自己看到那些符号,心里不发怵,所以写只是为了变得信任眼熟亲切记得. 魔方基础的令人讨厌气噎眼花缭乱终于整个头脑都拧巴