菜单

STTLed使用手册

下载

STTLed.h 使用手册

STTLed 封装 LVGL LED,用于布尔状态、报警状态和运行指示。它继承 STTWidget,可直接使用通用位置、显隐、事件和变量绑定接口。

1. 创建

cpp 复制代码
#include "widgets/STTLed.h"

using namespace stt;

STTLed* led = new STTLed(getRuntime(), parent, "ledRun");
led->setMainArg(20, 20, 40, 40, false, 0x00c060, 9999);

setMainArg 参数为 x、y、w、h、初始是否点亮、颜色和圆角。实现会移除边框,并在 ison=true 时把亮度设为 LV_LED_BRIGHT_MAX。

2. 状态操作

cpp 复制代码
led->on();
led->off();
led->toggle();

三个方法都返回 this,可链式调用,但连续 on()->off() 最终只保留最后状态。

3. 颜色和亮度

cpp 复制代码
led->setColor(0xff0000);
led->setBrightness(200);

uint8_t brightness = led->getBrightness();

头文件给出的有效亮度是 80..255;当前 STTLed 层不做范围检查,直接交给 LVGL。低于 80 的值及溢出值由底层类型转换和 LVGL 行为决定,调用方应主动限制。

示例:

cpp 复制代码
int value = 160;
if (value < 80) value = 80;
if (value > 255) value = 255;
led->setBrightness(value);

4. 绑定布尔变量

cpp 复制代码
Ivariable run = getRuntime()->getIVarMgr()->get("MotorRunning");
led->bindData(run);

onDataChanged 会用变量管理器读取整数,并按 C++ bool 规则处理:0 熄灭,任何非 0 值点亮。来源对象是当前 LED 时会跳过。

如业务变量可能使用字符串 "false",应确认变量管理器能正确转为整数;STTLed 自身不解析字符串布尔值。

5. 完整示例

cpp 复制代码
void Frm01::createRunLed(STTWidget* panel) {
    STTLed* led = new STTLed(getRuntime(), panel, "ledRun");
    led->setMainArg(16, 16, 32, 32, false, 0x18b566, 9999);
    led->setBrightness(220);

    Ivariable value = getRuntime()->getIVarMgr()->get("MotorRunning");
    if (value != nullptr) {
        led->bindData(value);
    }
}

6. 注意事项

  • 父控件和 Runtime 必须有效。
  • setBrightness 不做输入校验,建议限定 80..255。
  • getBrightness 返回实际底层亮度,不直接代表“是否开启”;很暗和关闭要按业务区分。
  • onDataChanged 是绑定框架使用的公开回调,业务代码通常不直接调用。
  • UI 更新应在 LVGL 线程进行。
最近修改: 2026-10-21Powered by