使用ZYNQ芯片和LVGL框架實現用戶高刷新UI設計系列教程(第九講)

這一期講解GUI_guider中的容器控件的使用以及相關函數,容器本質上是具有布局和自動調整大小功能的基本對象 ,通常用來裝載其他子控件。
打開上一期的項目,在工具欄中選中容器控件拖拽到界面中,具體如圖所示:
在這里插入圖片描述
容器默認是浮于其他控件上,我們右鍵容器控件選擇“置底”,然后改變容器位置為(75,56),大小為(329,400),圓角半徑為30,具體如圖所示:
在這里插入圖片描述
以下是界面的相關代碼:
//Write codes screen_2_cont_1
//創建容器控件
ui->screen_2_cont_1 = lv_obj_create(ui->screen_2);
//設置位置以及大小
lv_obj_set_pos(ui->screen_2_cont_1, 75, 56);
lv_obj_set_size(ui->screen_2_cont_1, 329, 400);
//禁用容器滾動條
lv_obj_set_scrollbar_mode(ui->screen_2_cont_1, LV_SCROLLBAR_MODE_OFF);

//Write style for screen_2_cont_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
//設置邊框寬度
lv_obj_set_style_border_width(ui->screen_2_cont_1, 2, LV_PART_MAIN|LV_STATE_DEFAULT);

//設置邊框透明度
lv_obj_set_style_border_opa(ui->screen_2_cont_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//設置邊框顏色
lv_obj_set_style_border_color(ui->screen_2_cont_1, lv_color_hex(0x2195f6), LV_PART_MAIN|LV_STATE_DEFAULT);
//設置邊框顯示方式
lv_obj_set_style_border_side(ui->screen_2_cont_1, LV_BORDER_SIDE_FULL, LV_PART_MAIN|LV_STATE_DEFAULT);
//設置圓角半徑
lv_obj_set_style_radius(ui->screen_2_cont_1, 30, LV_PART_MAIN|LV_STATE_DEFAULT);
//設置背景透明度
lv_obj_set_style_bg_opa(ui->screen_2_cont_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//設置背景顏色
lv_obj_set_style_bg_color(ui->screen_2_cont_1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
//設置背景漸變方向
lv_obj_set_style_bg_grad_dir(ui->screen_2_cont_1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
//設置內邊距(頂部、底部、左側、右側)
lv_obj_set_style_pad_top(ui->screen_2_cont_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_2_cont_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_2_cont_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_2_cont_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//設置陰影寬度
lv_obj_set_style_shadow_width(ui->screen_2_cont_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
?
容器控件布局方式的API
lv_cont_set_layout(lv_obj_t * cont, lv_layout_t layout);其中第二個參數指的是容器的布局方式。

  1. LV_LAYOUT_OFF = 0
    無布局:沒有指定布局,意味著對象的位置和大小由開發者手動設置,LVGL 不會自動調整。
  2. LV_LAYOUT_CENTER
    居中布局:將對象放置在容器的中心位置。
  3. LV_LAYOUT_COL_L
    列左對齊:將對象垂直排列在列中,并將所有對象左對齊。
  4. LV_LAYOUT_COL_M
    列中對齊:將對象垂直排列在列中,并將所有對象在列中居中對齊。
  5. LV_LAYOUT_COL_R
    列右對齊:將對象垂直排列在列中,并將所有對象右對齊。
  6. LV_LAYOUT_ROW_T
    行頂部對齊:將對象水平排列在一行中,并將所有對象頂部對齊。
  7. LV_LAYOUT_ROW_M
    行中部對齊:將對象水平排列在一行中,并將所有對象在行中居中對齊。
  8. LV_LAYOUT_ROW_B
    行底部對齊:將對象水平排列在一行中,并將所有對象底部對齊。
  9. LV_LAYOUT_PRETTY
    美觀布局:盡可能將對象排列在一行中,直到空間不夠時自動換行。
  10. LV_LAYOUT_GRID
    網格布局:將同樣大小的對象排列成一個網格布局。
  11. LV_LAYOUT_NUM
    布局類型的數量:表示布局類型的總數(這個常量通常用于表示布局枚舉的數量)。

容器自適應的API
函數有三個分別為:(1)lv_cont_set_fit4(lv_obj_t * cont, lv_fit_t left, lv_fit_t right, lv_fit_t top, lv_fit_t bottom)
(2)static inline void lv_cont_set_fit2(lv_obj_t * cont, lv_fit_t hor, lv_fit_t ver)
(3)static inline void lv_cont_set_fit(lv_obj_t * cont, lv_fit_t fit)
以上函數的作用都是設定容器的自適應方式,第一個設定四個方向的自適應方式,第二個是設定水平和垂直方向上的自適應方式,第三個是將四個方向的自適應方式統一設定。
以下是lv_fit_t的定義:

  1. LV_FIT_NONE
    不自動調整大小:此選項表示對象的大小不會自動調整,而是保持開發者手動設置的大小,不受父容器或子對象的影響。
  2. LV_FIT_TIGHT
    緊縮包裹子對象:對象的大小會自動調整為剛好包裹其所有子對象的大小,即對象的尺寸會緊密貼合子對象,避免任何空隙。
  3. LV_FIT_FLOOD
    填充到父容器的邊緣:對象的大小會自動調整,使其填滿父容器的空間。這意味著對象的大小會與父容器的尺寸一致。
  4. LV_FIT_FILL
    填充父容器的邊緣,但如果有子對象超出父容器范圍,則會增大對象大小:這個選項首先會讓對象填滿父容器的邊緣。如果對象內有子對象超出父容器的邊界,容器會自動增大,直到所有子對象都能完全顯示為止。
  5. _LV_FIT_NUM
    適配類型數量:表示適配類型的總數,通常用于定義適配類型的枚舉數量。
    注:具體請參照對應版本的官方手冊。

這些適配類型控制了對象如何根據其父容器和子對象的情況調整大小。不同的適配類型可以滿足不同布局和排版需求,讓開發者更靈活地管理對象的尺寸和顯示效果,下一期將講解登錄按鍵以及ok的回調邏輯。

本文章由威三學社出品
對課程感興趣可以私信聯系

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

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

相關文章

qt QGroupButton 實現兩個QPushButton的互斥

import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QButtonGroup, QVBoxLayoutclass ExampleApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 創建兩個 QPushButtonself.button1 QPushButton("按鈕1&quo…

工業物聯網的可視化編程革新:Node-RED與邊緣計算的深度融合-縱橫智控

在工業物聯網的演進歷程中,可視化編程工具正成為打破技術壁壘的核心力量。Node-RED作為開源的可視化編程平臺,通過其獨特的拖拽式邏輯構建能力,為設備連接、數據處理與業務邏輯設計提供了全新范式。本文將深入解析Node-RED的技術優勢&#xf…

Uniapp:view容器(容器布局)

目錄 一、基本概述二、屬性說明三、常用布局3.1 橫向布局3.2 縱向布局3.3 更多布局3.3.1 縱向布局-自動寬度3.3.2 縱向布局-固定寬度3.3.3 橫向布局-自動寬度3.3.4 橫向布局-居中3.3.5 橫向布局-居右3.3.6 橫向布局-平均分布3.3.7 橫向布局-兩端對齊3.3.8 橫向布局-自動填充3.3…

(最新)華為 2026 屆校招實習-硬件技術工程師-硬件通用/單板開發—機試題—(共14套)(每套四十題)

(最新)華為 2026 屆校招實習-硬件技術工程師-硬件通用/單板開發—機試題—(共14套)(每套四十題) 本套題目為硬件通用題目,適合多個崗位方向,如下 **崗位——硬件技術工程師 崗位意向…

AWS Lambda 架構深入探究

AWS Lambda 是現代云架構中最受歡迎的服務之一,因其能夠在完全托管的無服務器環境中運行代碼而廣受認可。然而,盡管 Lambda 廣受歡迎,許多開發者和架構師對它的底層運作機制卻知之甚少,常常將其視為“編寫能夠在云端神奇運行的代碼”的簡單方法。 本文將探討 AWS Lambda 背…

Android audio系統五 AudioPolicy 策略配置詳解

引用:Android 音頻策略配置文件解析流程 audio_policy_configuration.xml 是 Android 音頻系統的核心配置文件,它定義了音頻硬件接口、設備路由和基本策略。下面我將詳細介紹這個文件的結構、關鍵配置項和實際應用。audio_policy_configuration.xml 是 …

4.21日學習--引用

引用本質:引用的本質在 c 內部實現是一個指針常量。 代碼中 int& ref a; 可以理解為 int* const ref &a;(指針常量)。 指針常量:指針指向不可變(綁定 a 后,不能再指向其他變量)&…

2.1 數據處理

1. 數據獲取方法 掌握公開數據集的使用、數據質量評估指標、了解常見的網絡爬蟲技術 🧩 一、公開數據集的使用 ? 常見平臺(一定要熟) 平臺簡介示例數據集Hugging Face Datasets專注 NLP、CV 領域的大模型訓練數據集庫IMDB、SQuAD、Common …

Qt QWidget和QML實現窗口拖動源碼分享

一、QWidget實現窗口拖動 .hpp QPoint pressedPoint; bool leftBtnPressed false;.cpp bool PetWidget::eventFilter(QObject *obj, QEvent *event) {if(obj this){if(event->type() QEvent::MouseButtonPress){QMouseEvent* e static_cast<QMouseEvent *>(event)…

在pycharm中搭建yolo11分類檢測系統--PyQt5學習(二)

第二部分 測試本地pycharm通過程序連接遠程服務器autodl 模型的推理需要借助遠程服務器autodl&#xff0c;但是界面的運行是在pycharm中&#xff0c;我的設想是按鈕調用一個py文件就好了。 1. 本地運行PyQt5界面。 2. 當需要載入權重時&#xff0c;通過SSH連接到AutodL服務…

前端框架的“快閃“時代:我們該如何應對技術迭代的洪流?

引言&#xff1a;前端開發者的"框架疲勞" “上周剛學完Vue 3的組合式API&#xff0c;這周SolidJS又火了&#xff1f;”——這恐怕是許多前端開發者2023年的真實心聲。前端框架的迭代速度已經達到了令人目眩的程度&#xff0c;GitHub每日都有新框架誕生&#xff0c;n…

基于YOLO11的遛狗牽繩識別預警系統

基于YOLO11的遛狗牽繩識別預警系統 【包含內容】 【一】項目提供完整源代碼及詳細注釋 【二】系統設計思路與實現說明 【三】預訓練模型與數據集說明 【四】需要列出所有的類別&#xff0c;并且加入識別的類別數量&#xff1a;4類 0: dog (狗) 1: leash (牽引繩) 2: person …

Spring MVC 一個簡單的多文件上傳

原始代碼逐行解釋 PostMapping("/uploads") // ① 聲明處理POST請求&#xff0c;路徑為"/uploads" ResponseBody // ② 直接返回數據到響應體&#xff0c;不進行視圖解析 public String uploads(MultipartFile[] files, // …

C++繼承(最詳細)

目錄 1.繼承的概念以及定義 1.1 繼承的概念 1.2 繼承的定義 ?編輯 2.繼承中的作用域 3.基類和派生類間的轉換 4.派生類的默認成員函數 5.實現不被繼承的類 6.継承與友元 ?編輯 7.繼承與靜態成員 8.多繼承及其菱形繼承問題 8.2 虛繼承 8.3 來看一個小題 9.繼承…

day35圖像處理OpenCV

文章目錄 一、圖像預處理17 直方圖均衡化17.1繪制直方圖17.2直方圖均衡化1. 自適應直方圖均衡化2. 對比度受限的自適應直方圖均衡化3. 示例 19 模板匹配 一、圖像預處理 17 直方圖均衡化 直方圖&#xff1a;反映圖像像素分布的統計圖&#xff0c;橫坐標就是圖像像素的取值&…

【音視頻】FFmpeg內存模型

FFmpeg內存模型 從現有的Packet拷貝一個新Packet的時候&#xff0c;有兩種情況&#xff1a; 兩個Packet的buf引用的是同一數據緩存空間&#xff0c;這時候要注意數據緩存空間的釋放問題&#xff1b;兩個Packet的buf引用不同的數據緩存空間&#xff0c;每個Packet都有數據緩存…

1.2軟考系統架構設計師:系統架構的定義與作用 - 練習題附答案及超詳細解析

系統架構定義與作用綜合知識單選題 題目覆蓋核心概念、發展歷程、設計原則、評估標準及易混淆點&#xff0c;附答案解析&#xff1a; 1. 系統架構的標準定義源自于以下哪個標準&#xff1f; A. ISO/IEC 9126 B. IEEE 1471-2000 C. TOGAF 9.2 D. ITIL v4 答案&#xff1a;B 簡…

go語言對http協議的支持

http&#xff1a;無狀態協議&#xff0c;是互聯網中使用http使用http實現計算機和計算機之間的請求和響應 使用純文本方式發送和接受協議數據&#xff0c;不需要借助專門工具進行分析就知道協議中的數據 服務器端的幾個概念 Request&#xff1a;用戶請求的信息&#xff0c;用…

iscsi服務端安裝及配置

1. 安裝targetcli軟件包 yum install -y targetcli 2. 啟動target服務 systemctl start target systemctl enable target 3. 配置防火墻 firewall-cmd --add-port"3260/tcp" 3. 準備一個物理分區&#xff08;或者邏輯分區&#xff09;…

解決 MongoDB 查詢中的 `InvalidMongoDbApiUsageException` 錯誤

您在使用 Spring Data MongoDB 時遇到了 InvalidMongoDbApiUsageException 異常&#xff0c;錯誤信息如下&#xff1a; “由于 com.mongodb.BasicDocument 的限制&#xff0c;您無法添加第二個 ‘null’ 條件。查詢已經包含 ‘{ “KaTeX parse error: Expected }, got EOF at e…