上一节我们TouchGFX 添加了背景和文字显示,这次我们添加按键和按键动作,实现一个什么功能呢,那就再学习一个组件进度条,实现两个按键控制进度条。 找到按钮,我使用两个带文字的按钮和任意找一个进度条 修改按钮中间的值,我设置为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(); } 实验效果
最后附上工程: https://www.waveshare.net/w/upload/7/7e/TouchGFX%E7%95%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E4%B9%8B%E6%8C%89%E9%92%AE%E4%B8%8E%E5%93%8D%E5%BA%94.7z
发表评论
最新评论 |