首页 > 其他分享 >ftk学习记(button篇)

ftk学习记(button篇)

时间:2022-11-23 12:02:30浏览次数:44  
标签:widget set clicked win button 学习 ftk



    前面,我们说到了label,这里可以看一下label运行的效果是怎么样的。

ftk学习记(button篇)_ide

    大家可以对照上面的结果图,看看我们之前的描述是否正确。


    说完了label,可以看看button是怎么设计的。button是gui设计中的一个基本控件。通常我们按下了一个button,意味着此时想处理一个事情。具体是什么事情,完全可以通过设定一个回调函数来编写完成。同样,我们可以用一段demo代码来说明问题。


#include "ftk.h"

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

return RET_OK;
}

static Ret button_hide_clicked(void* ctx, void* obj)
{
ftk_widget_show(ftk_widget_lookup(ctx, IDC_TEST_BUTTON), 0);

return RET_OK;
}

static Ret button_show_clicked(void* ctx, void* obj)
{
ftk_widget_show(ftk_widget_lookup(ctx, IDC_TEST_BUTTON), 1);

return RET_OK;
}

static Ret button_default_clicked(void* ctx, void* obj)
{
printf("%s: button %s is clicked.\n", __func__, ftk_widget_get_text(obj));

return RET_OK;
}

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

ftk_init(argc, argv);

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

width = width/3 - 10;
button = ftk_button_create(win, 0, 30, width, 50);
ftk_widget_set_text(button, "show");
ftk_button_set_clicked_listener(button, button_show_clicked, win);

button = ftk_button_create(win, width + 10, 30, width, 50);
ftk_widget_set_text(button, "hide");
ftk_button_set_clicked_listener(button, button_hide_clicked, win);

button = ftk_button_create(win, 2*(width + 10), 30, width, 50);
ftk_widget_set_text(button, "按钮测试");
ftk_widget_set_id(button, IDC_TEST_BUTTON);
ftk_button_set_clicked_listener(button, button_default_clicked, win);

button = ftk_button_create(win, 0, 130, width, 40);
ftk_widget_set_text(button, "yes");
ftk_button_set_clicked_listener(button, button_default_clicked, win);

button = ftk_button_create(win, 2*(width + 10), 130, width, 40);
ftk_widget_set_text(button, "no");
ftk_button_set_clicked_listener(button, button_default_clicked, win);

button = ftk_button_create(win, width + 10, height/2, width, 60);
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, "button demo");
ftk_widget_show_all(win, 1);
ftk_widget_set_attr(win, FTK_ATTR_QUIT_WHEN_CLOSE);

ftk_run();

return 0;
}


    上面的代码有80行左右,但是流程不复杂。同样,代码在创建了一个win控件后,创建了六个button控件。它们依次是show、hide、按钮测试、yes、no、quit。当然,在创建button的时候,我们还得配置相应的回调函数,这里有四个回调函数。button_quit_clicked是quit使用,而button_default_clicked是缺省使用的回调函数。主要的两个函数还是button_show_clicked和button_hide_clicked,一个是显示button,一个是隐藏button,其中隐藏的button就是我们之前创建的“按钮测试”这个button。

    想看看运行效果的朋友,敬请期待下面一篇博文。



标签:widget,set,clicked,win,button,学习,ftk
From: https://blog.51cto.com/feixiaoxing/5880825

相关文章

  • ftk学习记(首篇)
        很早之前就知道ftk了,当时主要是因为买了李先静的书,所以知道了这么一个项目。因为对这种gui的代码很感兴趣,所以在我闲暇的时候也会拿来看一看。从整个工程来看,代码......
  • ftk学习记(label篇)
      还是接着上面的一篇博文。之前曾经答应过大家,让大家看一下最简单的ftk程序是怎么运行的。所以,这里我们上传一下图片。  因为还是编辑模式,所以暂时还不能看到图片......
  • MarkDown学习
    Markdown学习标题一级标题#+标题名二级标题##+标题名三级标题###+标题名字体正常字体Hello,World!Hello,World!文字两边加双星号为加粗字体Hello,World!......
  • unity学习笔记03-渲染管线
    图形数据在GPU上经过运算处理,最后显示在显示器上的过程游戏→图形API→cpu→(DRAWCALL)交给GPU→顶点处理→图元装配→光栅化→像素处理→缓存减少DRAWCALL 增加性能O......
  • 本人学习整理了-美妆类目完整直播话术框架流程➕话术提纲➕话术美妆类目完整直播话术
    本人当主播2年和运营1年,自己练习和整理的笔记分享详情内容,包括开场话术、活动话术、产品话术、品牌介绍、建立信任、优惠力度理由、促销、憋单技巧话术、互动话术、转款话......
  • 随想录(机器学习的生产应用)
    【声明:版权所有,欢迎转载,请勿用于商业用途。     从范围上讲,人工智能>机器学习>模式识别。最近机器学习愈演愈烈,特别是深度学习的发展,极大的推动了机器学习的应......
  • Python 深度学习目标检测评价指标
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 技术博客学习
    https://www.cnblogs.com/yangzhou33/archive/2020/11.htmlhttps://yuancheng.work/vue插槽学习https://blog.csdn.net/weixin_41646716/article/details/80450873......
  • Vue3学习笔记(七)—— 状态管理、Vuex、Pinia
    一、状态管理1.1、什么是状态管理?理论上来说,每一个Vue组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例:<scriptsetup>import{re......
  • 学习量子力学
    向xxx学习,我也决定开始写学习日记,也许可以提高效率!学习资料:Griffith:IntroductiontoQuantumMechanicsSakurai:ModernQuantumMechanicsProf.BartonZwiebach's......