成员初始化列表
在 C++ 中,成员初始化列表(Member Initializer List) 用于在构造函数中初始化类的成员变量或基类,比在构造函数体内赋值更高效(尤其是对 const 成员、引用成员和类类型成员)。下面通过几个例子详细说明其用法和优势。
1. 基本语法123ClassName(参数列表) 成员1(初始值), 成员2(初始值), ..., 基类(参数) { 构造函数体}
初始化顺序:基类 → 成员变量(按声明顺序,而非初始化列表顺序)→ 构造函数体。
2. 典型使用场景(1) 初始化基类1234567891011121314151617181920212223242526#include iostream#include stringclass Animal {public Animal(const stdstring& name) name_(name) {} void Speak() { stdcout I am name_ stdendl; }private ...
C语言设计模式整理
C语言设计模式的简单汇总
lv_slider一次滑动,lv_event_release进了4次的解决办法
1234567891011121314151617181920212223242526272829303132333435363738394041#include "lvgl/lvgl.h"typedef enum { STATE_IDLE, STATE_PRESSED, STATE_RELEASED} SliderState;static SliderState state = STATE_IDLE;static void slider_event_cb(lv_event_t *e) { lv_event_code_t code = lv_event_get_code(e); lv_obj_t *slider = lv_event_get_target(e); switch (state) { case STATE_IDLE: if (code == LV_EVENT_PRESSED) { state = STAT ...
lv_list关闭按钮点击后对齐的效果
问题lv_list里的按钮,如果在边缘未出现完整,点击后会自动完整停靠边缘,我想将这个功能关闭.
解决:1lv_obj_clear_flag(/*列表按钮*/,LV_OBJ_FLAG_SCROLL_ON_FOCUS); // <--这里
完整代码:
12345678910111213141516171819202122232425262728293031for (int i = 0; i < 4; ++i) { // 横向列表 mainWin.tabview.arrLRList[i] = lv_list_create(mainWin.tabview.arrTab[i]); lv_obj_set_pos(mainWin.tabview.arrLRList[i], 0, 0); lv_obj_set_size(mainWin.tabview.arrLRList[i], 1024 - 196, 600 - 67); removeBorder(mainWin.tabview.arrLRList[i]) ...
lv_tabview关闭通过滑动内容区域切换选项卡
12lv_obj_clear_flag(tabview, LV_OBJ_FLAG_SNAPPABLE);lv_obj_set_scroll_snap_x(tabview, LV_SCROLL_SNAP_NONE);
横向滑动的lv_list
lv_obj_t* list1 = lv_list_create(tab1);
lv_obj_set_pos(list1, 0,0);
lv_obj_set_size(list1,1024-196,600-67);
lv_obj_set_flex_flow(list1, LV_FLEX_FLOW_ROW);
lv_obj_set_scroll_dir(list1, LV_DIR_HOR);
lvgl8图像改成lvgl9图像的方法(c文件)
[1] 离线png->c的工具:
LittlevGL - 里飞网 - Powered by Discuz!
LvglImgTool更新V0.2版本 - LittlevGL - 里飞网 - Powered by Discuz!
Lvgl_image_convert_tool: 基于LVGl图片转换离线版封装的小工具,不仅有界面,还可以一键生成到项目里哦
lvgl8和lvgl9图片转换的结果对比lvgl8
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108#ifdef __has_include #if __has_include("lvgl.h") #ifndef L ...
关于lvgl控件的旋转
将如下lv_list旋转,
1.先 在lv_conf.h中打开LV_COLOR_SCREEN_TRANSP
2.使用lv_obj_set_style_transform_rotation
123456789101112lv_obj_t* list = lv_list_create(lv_scr_act());lv_obj_center(list);lv_obj_set_style_transform_rotation(list, 900, LV_STATE_DEFAULT); // 想旋转90度,要写900uint32_t i;for(i = 0; i < 20; i++) { lv_obj_t* btn = lv_button_create(list); lv_obj_set_width(btn, lv_pct(100)); lv_obj_t * label = lv_label_create(btn); lv_label_set_text_fmt(label, "Button %"LV_PRIu32, i);} ...
lvgl正点原子课程随笔
记录一些注意事项。
1.标签部件label
慎用lv_label_set_text_static(label, "hello");,此时文本“hello”不在动态内存,而在指定的缓冲区中,为只读状态。
如果试图改变文本,将引发错误。如:
123//错误代码lv_label_set_text_static(label, "hello hello hello hello");lv_label_set_long_mode(label, LV_LABEL_LONG_DOT); // 试图将最后面的字符变成 ... ,而文字为只读状态,这样将引发错误。
2.按钮部件btn
12lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE);lv_obj_add_event_cb( btn, event_cb, LV_ENENT_VALUE_CHANDED, NULL);
原因:状态LV_ENENT_VALUE_CHANDED用于指定检测按钮的值是否发生变化,而想要如此必须先开启按钮状态的切换:lv_obj_add_flag(btn ...
江科协stm32笔记
江科协stm32课程相关记录