硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1204|回复: 9
收起左侧

[ThreadX全家桶] verticl list咨询

[复制链接]

62

主题

181

回帖

367

积分

高级会员

积分
367
发表于 2022-8-12 13:37:31 | 显示全部楼层 |阅读模式
本帖最后由 gck 于 2022-8-12 13:48 编辑

如附件视频所示,诸位有无更好的办法或者看出问题所在,初学,懂得不多;
1、ui如下
图片.png
2、代码如下
UINT window_2_event_handler(GX_WINDOW *window, GX_EVENT *event_ptr)
{
    switch(event_ptr->gx_event_type){
    case GX_SIGNAL(ID_VERTICAL_LIST, GX_EVENT_LIST_SELECT):
            gx_vertical_list_selected_index_get(&window_2.window_2_vertical_list
            ,&selected_patient_index);
            break;
        default:
            break;
    }
    return screen_template_event_process(window, event_ptr);
}
VOID ToggleScreen(GX_WIDGET *new_win, GX_WIDGET *old_win)
{
    gx_widget_hide(old_win);
    if (!new_win->gx_widget_parent){
        gx_widget_attach((GX_WIDGET *)&page_2_container_screen, new_win);
    }else{
        gx_widget_show(new_win);  
    }
}

/******************************************************************************************/
/* Override the default event processing of "screen_template" to handle signals from my   */
/* child widgets.                                                                         */
/******************************************************************************************/
UINT screen_template_event_process(GX_WINDOW *window, GX_EVENT* event_ptr)
{
    ULONG ret;
    ret = event_ptr->gx_event_payload.gx_event_ulongdata;
    switch (event_ptr->gx_event_type)
    {
        case GX_EVENT_SHOW:
            /* Update title bar clock.  */
            update_title_clock((SCREEN_TEMPLATE_CONTROL_BLOCK *)window);
            /* Start a timer to update title bar clock.  */
            gx_system_timer_start(window, SCREEN_CLOCK_TIMER_ID, GX_TICKS_SECOND, GX_TICKS_SECOND);
            return gx_window_event_process(window, event_ptr);
        case GX_EVENT_HIDE:
            /* Stop clock update timer.  */
            gx_system_timer_stop(window, SCREEN_CLOCK_TIMER_ID);
            return gx_window_event_process(window, event_ptr);
        case GX_EVENT_TIMER:
            if (event_ptr->gx_event_payload.gx_event_timer_id == SCREEN_CLOCK_TIMER_ID){
                /* Update title bar clock.  */
                update_title_clock((SCREEN_TEMPLATE_CONTROL_BLOCK *)window);
            }
            break;
        case GX_SIGNAL(ID_VERTICAL_LIST, GX_EVENT_LIST_SELECT):
            if(ret == 0){
                ToggleScreen((GX_WIDGET *) &calories_screen,(GX_WIDGET *)window);
            }
            else if(ret == 1){
                ToggleScreen((GX_WIDGET *) &ekg_screen,(GX_WIDGET *)window);
            }
            else if(ret == 2){
                ToggleScreen((GX_WIDGET *) &run_screen,(GX_WIDGET *)window);
            }
            else if(ret == 3){
                ToggleScreen((GX_WIDGET *) &stand_screen,(GX_WIDGET *)window);
            }
            else if(ret == 4){
                ToggleScreen((GX_WIDGET *) &yoga_screen,(GX_WIDGET *)window);
            }
            break;
        default:
            return gx_window_event_process(window, event_ptr);
        }
    return 0;
}

GUIX 2022-08-12 13-22-35.mp4

9.34 MB, 下载次数: 2

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115863
QQ
发表于 2022-8-13 11:16:12 | 显示全部楼层
你这个是背景区没有重绘吧
回复

使用道具 举报

62

主题

181

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2022-8-15 09:53:44 | 显示全部楼层
eric2013 发表于 2022-8-13 11:16
你这个是背景区没有重绘吧

不太懂,请教在哪块添加函数合适些?
回复

使用道具 举报

62

主题

181

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2022-8-15 13:46:29 | 显示全部楼层
gck 发表于 2022-8-15 09:53
不太懂,请教在哪块添加函数合适些?

关于此功能是否还有其他更好的办法,也请详细说明,甚者可以有网格分布图那种形式也希望能有人实现分享,欢迎指教。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115863
QQ
发表于 2022-8-16 00:44:11 | 显示全部楼层
gck 发表于 2022-8-15 09:53
不太懂,请教在哪块添加函数合适些?

就是你绘制你这个界面的时候,是绘制的整个显示区吗,从你的视频效果来看,你的两个边界是没有绘制的。
回复

使用道具 举报

62

主题

181

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2022-8-16 10:51:55 | 显示全部楼层
eric2013 发表于 2022-8-16 00:44
就是你绘制你这个界面的时候,是绘制的整个显示区吗,从你的视频效果来看,你的两个边界是没有绘制的。

参照官方例子中demo_guix_vertical_list以及demo_guix_medical;绘制的是页面的整个显示区。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115863
QQ
发表于 2022-8-17 09:38:46 | 显示全部楼层
gck 发表于 2022-8-16 10:51
参照官方例子中demo_guix_vertical_list以及demo_guix_medical;绘制的是页面的整个显示区。

左右两边应该是没有绘制到,你发的那个视频效果确实是有残影。
回复

使用道具 举报

62

主题

181

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2022-8-17 11:23:27 | 显示全部楼层
eric2013 发表于 2022-8-17 09:38
左右两边应该是没有绘制到,你发的那个视频效果确实是有残影。

官方大多例子中关于vertical_list没有通过guix studio直接创建控件的行情况,而是通过vertical_list的回调函数来实现行结构的;guix sudio直接在页面下创建vertical_list,只是通过该页面的回调函数拿到滑动选中的数值,是不是vertical_list回调函数是必须创建的,是否这块就是问题原因所在?
楼主什么时候有时间能够更新一下这方面内容?即使官方给出的例子,vs2019上很快模拟;仍然存在一些可能不知道的设计思维,控件组合、各参数情况、回调函数等等,都是互相联系的。
回复

使用道具 举报

62

主题

181

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2022-8-20 17:47:33 | 显示全部楼层
问题已经解决,vertical_list设计中参数设置不正确导致的,另外如果有更好的方式,更人性化的设计思路,欢迎在下方留言指导。
图片.png
回复

使用道具 举报

62

主题

181

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2022-8-20 18:08:48 | 显示全部楼层
gck 发表于 2022-8-20 17:47
问题已经解决,vertical_list设计中参数设置不正确导致的,另外如果有更好的方式,更人性化的设计思路,欢 ...

阴影问题已经解决,另外一个小问题咨询一下,
vertical_list中随机一行选中之后,切换到另外的新页面,然后重新鼠标滑动到刚才的vertical_list页面,刚才的选中行不能切换,还是选中的状态,只能选择vertical_list未选中行的其他项切换到其他页面,如何切换后取消选中的状态……?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-24 01:07 , Processed in 0.530623 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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