学习一个组件进度条,实现两个按键控制进度条。
找到按钮,我使用两个带文字的按钮和任意找一个进度条
修改按钮中间的值,我设置为80和20,
另外为了区分两个按钮需要对两个按键取一个特别的名字,取名字要按照C语言函数命名规则,那就默认的名字后面加一个20把,另一个一样也是默认名字后面加一个80,那那个进度条叫什么呢,反正就一个就默认把,然后在右边interactions添加一个interaction(互动?)
设置当20按钮被点击时候设置进度条值为20,同样在加一个互动设置当80按钮被点击时候设置进度条值为80
设置好我们运行一下,鼠标点两个按钮发现进度条值被改变了,好,本章,,,,,,继续。
这样设置是不是太差劲了只能在80和20之间跳,那可不可以一点点慢慢加或者慢慢减呢,当然可以。
但是那样按钮这样取名字就不是很好看了,我们重新来取名字,不然叫UP和DOWN,把按键名字和里面字一起改了。
然后把互动里面也一起修改了,改成调用新的虚函数(它代表的意思是响应按钮按下消息的代码是在一个称为 DOWN_Function() 的虚函数),把UP也一起改了。
画重点来了,在我们TouchGFX 工程目录下有一个 \simulator\msvs 文件夹,里面有一个Application.sln的文件使用Visual Studio 打开,在Visual Studio 旁边有一个这样的工程,可以看看你们有一些什么文件。
在Screen1ViewBase.hpp中有自动生成函数原型
virtual void DOWN_Function()
virtual void UP_Function()
两个函数,但是这个文件是不让你修改的,并且告诉你.//覆盖此函数并在ScreenlView中实现,这个函数怎么写呢,定义一个变量然后,然后每次按按钮被按下执行加1或者减1,所以我们在Screen1View.hpp中声明这个函数和这个变脸。
然后在Screen1View.cpp中定义这个函数,加1或者减1并且打印数据,保存代码,请养成一个随手保存代码的习惯。
回到TouchGFX运行试一试,注意如果你的点运行很长时间没有运行模拟器那么你代码有问题,注意软件左下角提示
运行模拟器按下按钮发现弹出一个命令行的对话框。每次按下按钮都输出对应的值。把这些值限制在0到100,并且送给进度条显示。
将两个函数改成如下,运行即可,circleProgress1为进度条名字,setValue是设置其值,invalidate是更新显示,在Visual Studio 里面对函数按下F12可以查看函数原形和说明。还有一个BUG为第一次按下按钮发现进度条是跳过去的,这个BUG留给你们解决。
void Screen1View::DOWN_Function()
{
count--;
if (count < 0) {
count = 100;
}
touchgfx_printf("count %d\r\n", count);
circleProgress1.setValue(count);
circleProgress1.invalidate();
}
void Screen1View::UP_Function()
{
count++;
if (count > 100) {
count = 0;
}
touchgfx_printf("count %d\r\n", count);
circleProgress1.setValue(count);
circleProgress1.invalidate();
}
实验效果
|