在TouchGFX中,经常使用同一个按键来进行往复开关,就如自锁开关一样,当前一个功能,按下修改标签文字,当再次按下时执行不同的功能,同时又将标签设回原来的文本。
如下图所示,我需要将安装开始采集这个按键,按下去时修改文本为“停止采集”

【代码实现】
1、标签文字的实现,需要在TouchGFX的Texts下面进行ID设定,我们打开Texts下面有Id这一栏。

我们需要将开始采集这个的Id修改为START,停止采集的Id设置为STOP
在按键的触发函数中,我们添加代码如下:
void Screen1View::funstart()
{
// Override and implement this function in Screen1
// 获取bntRun的标签文本
touchgfx::TypedText btnRunText = butStrat.getLabelText();
// 判断按钮文本是否为"START"
if (touchgfx::Unicode::strncmp(btnRunText.getText(), TypedText(T_START).getText(), 8) == 0)
{
// 改变按钮文本为"STOP"
runFlage = 1;
// MKS_RUN(0x8a);
butStrat.setLabelText(touchgfx::TypedText(T_STOP));
butStrat.invalidate();
}
else if (touchgfx::Unicode::strncmp(btnRunText.getText(), TypedText(T_STOP).getText(), 8) == 0)
{
// 改变按钮文本为"START"
runFlage = 0;
// MKS_RUN(0x88);
butStrat.setLabelText(touchgfx::TypedText(T_START));
butStrat.invalidate();
}
}这里需要注意的是TypedText传入的参数需要在前面添加一个T_才能正确的识别,同时别忘了添加头文件:
#include <touchgfx/TypedText.hpp> // 确保包含头文件 #include <touchgfx/Unicode.hpp> // 用于Unicode操作 #include <texts/TextKeysAndLanguages.hpp> #include <touchgfx/Color.hpp>
通过这样就可以成功的动态修改button with label的文字了:

我要赚赏金
