搜索
bottom↓
回复: 6

求教onbutton触发显示进度条该如何配置?

[复制链接]

出0入0汤圆

发表于 2011-11-6 22:08:48 | 显示全部楼层 |阅读模式
各位大侠好,小弟想实现按钮触发进度条显示,通过参考example,得出一下程序,刚学的RTGUI,请各位高手指点一下。
以下程序问题一:进度条不走
问题二:在原有界面的上面弹出一条进度条,其他的不显示
可能我对GUI的各个结构还不是很了解,正在研究中。请帮忙解答一下,谢谢了。
static void demo_view_progressbar(rtgui_widget_t* widget, struct rtgui_event* event)
{
        rtgui_workbench_t *workbench;
        rtgui_view_t *view;
        rtgui_rect_t rect;
        rtgui_label_t *label;

        /* 获得顶层的workbench */
        workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget));
        rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect);
       
        /* create a demo view */
        view = demo_view(workbench, "ProgressBar View");
       
        /* get demo view rect */
        demo_view_get_rect(view, &rect);
        label = rtgui_label_create("水平进度条:");
        rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(label));
        rect.x1 += 5; rect.x2 -= 5;
        rect.y1 += 5; rect.y2 = rect.y1 + 18;
        rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
        rect.y1 += 20; rect.y2 = rect.y1 + 18;
        hbar = rtgui_progressbar_create(RTGUI_HORIZONTAL, 100, &rect);
        rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(hbar));
        bar_timer = rtgui_timer_create(50, RT_TIMER_FLAG_PERIODIC,
                progressbar_timeout, RT_NULL);
        rtgui_timer_start(bar_timer);

        /* 删除 文件列表 视图 */
        rtgui_view_destroy(RTGUI_VIEW(view));
        rtgui_view_show(_view, RT_FALSE);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-11-7 09:37:42 | 显示全部楼层
你的onbutton函数在哪里?

出0入0汤圆

 楼主| 发表于 2011-11-7 12:57:02 | 显示全部楼层
回复【1楼】ffxz  
-----------------------------------------------------------------------
    ffxz老大,我是放在demo_button_view里面,就是button的那个例子。
请老大赐教,谢谢了。
    本人刚接触RTT,新手,越研究越觉得RTT有意思,是一个很好的东西。但是可能
是本人能力有限,只能先研究一段时间,才能慢慢上手,而不是拿来就用。不过我想
随着RTT的发展完善,会有更详尽的文档,让我们这些新手更好的入门,期待新的“编
程手册”了。
    给为中国开源事业做无私贡献的工程师们致敬了。

出0入0汤圆

发表于 2011-11-7 13:12:36 | 显示全部楼层
原来的GUI demo中,显示进度条,并走,依靠的是一个定时器,当定时器超时时,更改进度条的当前值。

你的第二个问题看不太懂:
例如程序中为什么会有
rtgui_view_destroy(RTGUI_VIEW(view));

如果有这个,view就会被删除了。

出0入0汤圆

 楼主| 发表于 2011-11-7 21:05:59 | 显示全部楼层
回复【3楼】ffxz
-----------------------------------------------------------------------
ffxz老大,下面的算是定义和调用了定时器吗?
不好意思,可能问的问题有点弱,但是急用,谢谢了哈。

void progressbar_timeout(struct rtgui_timer* timer, void* parameter)
{
        static rt_uint32_t value = 0;

        value ++;
        if (value == 100) value = 0;

        rtgui_progressbar_set_value(hbar, value);
        rtgui_progressbar_set_value(vbar, value);
}

bar_timer = rtgui_timer_create(50, RT_TIMER_FLAG_PERIODIC, progressbar_timeout, RT_NULL);

rtgui_timer_start(bar_timer);

出0入0汤圆

 楼主| 发表于 2011-11-8 20:45:07 | 显示全部楼层
自己顶一下,请能人解答。。。谢谢啦。
还有在一个子view,要回到父view需要什么函数?
         view = RTGUI_VIEW(widget->parent);
       workbench = RTGUI_WORKBENCH(RTGUI_WIDGET(view)->parent);
是这两个嘛?

出0入0汤圆

 楼主| 发表于 2011-11-9 12:57:28 | 显示全部楼层
有没有人给我解答一下,谢谢啊。急用!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 12:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表