LVGL學習筆記 30 - List(列表)

目錄

1. 添加文本

2. 添加按鈕

3. 事件

4. 修改樣式

4.1 背景色

4.2?改變項的顏色


列表是一個垂直布局的矩形,可以向其中添加按鈕和文本。

    lv_obj_t* list1 = lv_list_create(lv_scr_act());lv_obj_set_size(list1, 180, 220);lv_obj_center(list1);

部件包含:

LV_PART_MAIN - 主要的屬性,大部分是這個部件。

LV_PART_SCROLLBAR - 滾動條的屬性。

1. 添加文本

lv_obj_t * lv_list_add_text(lv_obj_t * list, const char * txt)

添加一行文本,當字符串長度超過顯示時,會自動滾動顯示。

lv_list_add_text(list1, "item1");
lv_list_add_text(list1, "item2");
lv_list_add_text(list1, "item3");
lv_list_add_text(list1, "item4");

注意返回值,函數返回這一行的對象,可以用于設置事件響應點擊行為。

2. 添加按鈕

功能和添加文本類似,只是多了一個icon的顯示。

lv_obj_t * lv_list_add_btn(lv_obj_t * list, const void * icon, const char * txt)

?icon可以是系統符號,也可以是圖片(如下面的代碼,imgFan是之前學習image時的圖片句柄),而字符串部分如果超出顯示會滾動。

lv_list_add_text(list1, "item4 - try to scroll");lv_list_add_btn(list1, LV_SYMBOL_FILE, "New");
lv_list_add_btn(list1, &imgFan, "Fan, try to scroll");

同文本,返回值是這一行的對象。

另外,當參數icon為NULL時,不會添加icon,只添加txt;當txt為NULL時,則只添加icon;如果2個都是NULL時,只添加一個無顯示的btn。

lv_list_add_btn(list1, NULL, "New");
lv_list_add_btn(list1, LV_SYMBOL_FILE, NULL);
lv_list_add_btn(list1, NULL, NULL);

3. 事件

利用返回的對象值設置每行的事件。

lv_obj_t* item;
item = lv_list_add_btn(list1, &imgFan, "Fan, try to scroll");
lv_obj_add_event_cb(item, listBtnFan_cb, LV_EVENT_CLICKED, NULL);static void listBtnFan_cb(lv_event_t* event)
{lv_event_code_t code = lv_event_get_code(event);lv_obj_t* obj = lv_event_get_target(event);lv_obj_t* list = lv_event_get_current_target(event);if (code == LV_EVENT_CLICKED){LV_LOG_USER("Clicked: %s", lv_list_get_btn_text(list, obj));}
}

4. 修改樣式

4.1 背景色

lv_obj_set_style_bg_color(list1, lv_color_hex(0xff0000), LV_PART_MAIN);

4.2?改變項的顏色

直接改是改不了的,一種方案是通過修改整體的樣式實現,另外一種是獲得對應控件的句柄來修改。看list代碼可以看出,實際btn和label是list的子對象,可以通過函數lv_obj_get_child獲得句柄。

item = lv_obj_get_child(list1, 0);
lv_obj_set_style_bg_color(item, lv_color_hex(0xff0000), LV_PART_MAIN);

參數id = 0是因為item1是第一個添加的對象,注意,對于btn,雖然可能添加了2個對象,但是2個是屬于一個id。

item = lv_obj_get_child(list1, 5);
lv_obj_set_style_bg_color(item, lv_color_hex(0xff0000), LV_PART_MAIN);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36340.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android:換膚框架Android-Skin-Support

gihub地址:https://github.com/ximsfei/Android-skin-support 樣例: 默認: 更換后: 一、引入依賴: // -- 換膚依賴implementation skin.support:skin-support:4.0.5// skin-supportimplementation skin.support:ski…

Rust語法:變量,函數,控制流,struct

文章目錄 變量可變與不可變變量變量與常量變量的Shadowing標量類型整數 復合類型 函數控制流if elseloop & whilefor in structstruct的定義Tuple Structstruct的方法與函數 變量 可變與不可變變量 Rust中使用let來聲明變量,但是let聲明的是不可變變量&#x…

Golang自定義類型與類型別名

type myInt int32 與 type myInt int32,概念并不相同 自定義類型:type myInt int32 通過這種方式定義的類型是一個全新的類型,這個新類型與int32有相同的底層結構,但是卻與int32類型不兼容。 type myInt int32var a int32 5 var…

雙色球彩票系統---(java實現)

雙色球彩票系統:需求:投注號碼由6個紅色號碼和1個藍色球號碼組成。紅色球號碼從1-33中選擇,藍色球號碼從1-16當中選擇 * 紅 藍 * 一等獎 6 1 * 二等獎 6 0 * 三等獎 5 1 * 四等獎 5 0 * 4 1 * 五等獎 4 0 * …

Blazor簡單教程(1.1):Razor基礎語法

文章目錄 前言基本文件配置引入Layout組件 語法介紹pagecodeRazor 語法[ 顯式表達和隱式表達](https://learn.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?viewaspnetcore-7.0#explicit-razor-expressions) 綁定簡單綁定雙向綁定帶參數的函數綁定 依賴注入 前言 Blazor…

synchronized使用

目錄 問題描述 1 鎖方法 2 鎖代碼塊 3 鎖某個類 4 靜態方法上的synchronized 當我們處理多線程處理同步問題的時候就會用到synchronized這個關鍵字,下面介紹下synchronized的四種用法。 問題描述 介紹之前我們先來看下,在java 多線程中 如果沒有線…

leetcode1. 兩數之和

題目:leetcode1. 兩數之和 描述: 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中…

QT:UI控件(按設計師界面導航界面排序)

基礎部分 創建新項目:QWidget,QMainWindow,QDialog QMainWindow繼承自QWidget,多了菜單欄; QDialog繼承自QWidget,多了對話框 QMainWindow 菜單欄和工具欄: Bar: 菜單欄:QMenuBar&#xff0…

A Survey for In-context Learning

A Survey for In-context Learning 摘要: 隨著大語言模型(LLMs)能力的增長,上下文學習(ICL)已經成為一個NLP新的范式,因為LLMs僅基于幾個訓練樣本讓內容本身增強。現在已經成為一個新的趨勢去探索ICL來評價和extrapolate LLMs的能力。在這篇…

微服務06-分布式事務解決方案Seata

1、Seata 概述 Seata事務管理中有三個重要的角色: TC (Transaction Coordinator) - **事務協調者:**維護全局和分支事務的狀態,協調全局事務提交或回滾。 TM (Transaction Manager) - **事務管理器:**定義全局事務的范圍、開始全局事務、提交或回滾全局事務。 RM (Resourc…

Java地圖專題課 基本API BMapGLLib 地圖找房案例 MongoDB

本課程基于百度地圖技術,由基礎入門開始到應用實戰,適合零基礎入門學習。將企業項目中地圖相關常見應用場景的落地實戰,包括有地圖找房、輕騎小程序、金運物流等。同時講了基于Netty實現高性能的web服務,來處理高并發的問題。還講…

ttf-dejavu fontconfig字體

ttf-dejavu fontconfig是驗證碼,pdf,excel時需要用到的字體 編輯dockerfile,先切換國內鏡像源,默認alpinelinux是國外源,下載包會很慢 vim Dockerfile FROM alpine:latest RUN sed -i s/dl-cdn.alpinelinux.org/mirr…

【創建型設計模式】C#設計模式之原型模式

原型模式是一種創建型設計模式,它通過復制現有對象來創建新對象,而無需通過實例化的方式。它允許我們使用已經存在的對象作為藍本,從而創建新的對象,這樣可以避免重復初始化相似的對象,提高了對象的創建效率。 現在給…

Sentinel

1、熔斷降級限流 熔斷 A服務調用B服務的某個功能,由于網絡不穩定、B服務卡機等問題,導致功能時間超長。如果這樣子的次數太多,我們就可以直接將B斷路(A不再請求B接口),凡是調用B服務的直接返回降級數據&a…

13-數據結構-串以及KMP算法,next數組

串 目錄 串 一、串: 二、串的存儲結構: 三、模式匹配 1.簡單模式匹配(BF算法) 2.KMP算法 2.1-next(j)數組手工求解 2.2-nextval(j)數組手工求解 一、串: 內容受…

JVM垃圾回收篇-垃圾回收算法

JVM垃圾回收篇-垃圾回收算法 標記清除(Mark Sweep) 概念 collector指的就是垃圾收集器。 mutator是指除了垃圾收集器之外的部分,比如說我們的應用程序本身。 mutator的職責一般是NEW(分配內存)、READ(從內存中讀取內容)、WRITE(將內容寫入內…

將多個單獨的 Excel 文件合并成一個,并添加標題行

要將多個單獨的 Excel 文件合并成一個,并添加標題行,可以使用 Python 的 pandas 庫。以下是一個示例代碼,假設要合并的 Excel 文件都在同一個文件夾中: import os import pandas as pd # 指定文件夾路徑 folder_path path/to/fo…

vscode搭建c語言環境問題

c語言環境搭建參考文章:【C語言初級階段學習1】使用vscode運行C語言,vscode配置環境超詳細過程(包括安裝vscode和MinGW-W64安裝及后續配置使用的詳細過程,vscode用戶代碼片段的使用)[考研專用]_QAQshift的博客-CSDN博客 問題如下:…

[C++ 網絡協議] 套接字和地址族、數據序列

目錄 1. 套接字 1.1 在Linux平臺下構建套接字 1.1.1 用于接聽的套接字(服務器端套接字) 1.1.2 用于發送請求的套接字(客戶端套接字) 1.2 在Windows平臺下構建套接字 1.2.1 Winsock的初始化 1.2.2 用于接聽的套接字(服務器端套接字) 1.2.3 用于發送請求的套接字(客戶端套…

pytest框架快速進階篇-pytest前置和pytest后置,skipif跳過用例

一、Pytest的前置和后置方法 1.Pytest可以集成unittest實現前置和后置 importunittestimportpytestclassTestCase(unittest.TestCase):defsetUp(self)->None:print(unittest每個用例前置)deftearDown(self)->None:print(unittest每個用例后置)classmethoddefsetUpClass…