zoukankan      html  css  js  c++  java
  • ftk学习记(滑动条篇)


    【声明:版权全部,欢迎转载,请勿用于商业用途。

     联系信箱:feixiaoxing @163.com】 


        前一篇说到了combox。就先看一下效果吧。




        说完了combox,就谈谈今天的滑动条。滑动条,当然也能够称之为scroll bar,有时候也叫进度条。打个例如。在音频或者视频播放器中,假设我们想高速略过某些内容,这个进度条就能够用上了。


    #include "ftk.h"
    
    static Ret button_quit_clicked(void* ctx, void* obj)
    {
    	ftk_quit();
    
    	return RET_OK;
    }
    
    static Ret scroll_bar_on_scroll(void* ctx, void* scroll_bar)
    {
    	ftk_logd("%s: value=%d
    ", __func__, ftk_scroll_bar_get_value(scroll_bar));
    
    	return RET_OK;
    }
    
    int main(int argc, char* argv[])
    {
    	int width = 0;
    	int height = 0;
    	FtkWidget* win = NULL;
    	FtkWidget* button = NULL;
    	FtkWidget* scroll_bar = NULL;
    
    	ftk_init(argc, argv);
    	
    	win = ftk_app_window_create();
    	width = ftk_widget_width(win);
    	height = ftk_widget_height(win);
    	
    	/*v*/
    	scroll_bar = ftk_scroll_bar_create(win, width/8, 5, 0, height/2);
    	ftk_scroll_bar_set_param(scroll_bar, 0, 120, 120);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    
    	scroll_bar = ftk_scroll_bar_create(win, width/4, 5, 0, height/2);
    	ftk_scroll_bar_set_param(scroll_bar, 40, 120, 60);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    	
    	scroll_bar = ftk_scroll_bar_create(win, 3*width/8, 5, 0, height/2);
    	ftk_scroll_bar_set_param(scroll_bar, 110, 120, 30);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    	
    	scroll_bar = ftk_scroll_bar_create(win, width/2, 5, 0, height/2);
    	ftk_scroll_bar_set_param(scroll_bar, 120, 120, 20);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    
    	/*h*/
    	scroll_bar = ftk_scroll_bar_create(win, 5, height/2 + 10, width - 10, 0);
    	ftk_scroll_bar_set_param(scroll_bar, 120, 120, 20);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    	
    	scroll_bar = ftk_scroll_bar_create(win, 5, height/2 + 30, width - 10, 0);
    	ftk_scroll_bar_set_param(scroll_bar, 110, 120, 30);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    	
    	scroll_bar = ftk_scroll_bar_create(win, 5, height/2 + 50, width - 10, 0);
    	ftk_scroll_bar_set_param(scroll_bar, 40, 120, 60);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    	
    	scroll_bar = ftk_scroll_bar_create(win, 5, height/2 + 80, width - 10, 0);
    	ftk_scroll_bar_set_param(scroll_bar, 0, 120, 120);	
    	ftk_scroll_bar_set_listener(scroll_bar, scroll_bar_on_scroll, NULL);
    	
    	button = ftk_button_create(win, 2*width/3, height/4, width/3-5, 50);
    	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, "scroll_bar demo");
    	ftk_widget_show_all(win, 1);
    	ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE);
    
    	ftk_run();
    
    	return 0;
    }
    

       熟悉了ftk流程的同学肯定一眼就看到了进度条的相关代码了。

    这里面的ftk_scroll_bar_create就是它的创建函数,ftk_scroll_bar_set_param是它的属性设置函数,ftk_scroll_bar_set_listener是设置它的回调函数。

    假设我们滑动了这个进度条,scroll_bar_on_scroll就会被调用。通过当中的函数ftk_scroll_bar_get_value就能够得到当前的数值了。我们也能够进行进一步的处理和分析了。

     

       老规矩,下次见效果。




  • 相关阅读:
    使用tcmalloc编译启动时宕机
    使用tcmalloc编译出现undefined reference to `sem_init'
    使用AddressSanitizer做内存分析(一)——入门篇
    VIM-美化你的标签栏
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
    Entity Framework Code First (一)Conventions
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7391054.html
Copyright © 2011-2022 走看看