文章目录
前言
在QGC最上面一栏添加一个按钮,单击出现一个文本框,背景为白色到黑色渐变,里面有两个按钮,点击Sender会自身改变颜色并给Receiver发送信号,同时Receiver也会改变颜色并显示点击的次数。
一、打开MainRootWindow.qml
找到槽函数function viewSwitch(isPlanView),这里是为了当点击最上面按钮,主界面内容发生改变,因此默认设置主界面不显示。因此仿造上面的analyzeWindow写一个对应的。
然后这里是为了设置当点击最上面图标按钮的时候,对应的主界面内容发生改变,因此设置仿造上面function showAnalyzeView()写一个对应的。
最后这里是给自己所添加的按钮动态加载QML组件的来源,因此仿造上面的Loader写一个对应的。
二、打开MainToolBar.qml
找到QGCToolBarButton,这个就是自己添加按钮的实现函数,仿造上面的analyzeButton写一个。
icon.source就是设置图标的来源,这里我用了QGC自带的一个图标。
onClicked就是点击事件,根据之前设置的function槽函数,这里改成mainWindow.showMyAddView()。
三、之前的修改只是为了在QGC最上面添加一个按钮图标,因此为了实现点击按钮后的功能,需要自己添加qml文件。
1.新建qml文件
MyAdd.qml里面的内容可以参考AppSettings.qml,为了实现之前所说的功能,还需要按照之前的方法添加背景(MyAddBackground.qml),按钮(MyAddButton.qml),接收(Receiver.qml)和发送(Sender.qml)这4个qml组件。
2.背景组件(MyAddBackground.qml)
设置渐变色,从白色到黑色
3.按钮(MyAddButton.qml)
这里的两个property是把按钮内容和按钮颜色导出后的属性,方便以后在其他地方修改
4.接收(Receiver.qml)
①MyAddButton:Receiver继承于MyAddButtonMyAddButton
②function槽函数:当这个槽函数触发的时候,其内容和按钮颜色都发生改变
③SequentialAnimation动画:当槽函数内容发生变化的时候,其颜色会从红色到蓝色来回变化,默认关闭
5.发送(Sender.qml)
①MyAddButton:Receiver继承于MyAddButtonMyAddButton
②property是自定义属性,计数值为0
③signal信号函数,把信号发送给Receiver,
④property是自定义属性,目标是Receiver,默认为null
⑤onTargetChanged函数是当目标的值发生改变的时候,将send信号的连接到receive槽函数上⑥MouseArea是设置鼠标的处理,并设置区域占满整个按钮,当点击的时候发送信号,并且sender的计数值改变;当按钮被按下去的时候,按钮颜色变成蓝色;当按钮弹起的时候,按钮颜色变成红色。
6.MyAdd.qml
首先添加MyAddBackground组件,接着再上门添加Sender和Receiver组件,并设置内容和颜色。然后在Sender中给target赋值,当target的值由null转为receiver的时候,就会触发Sender的槽函数,最后send会将这个信号和对应的receive槽进行连接,所以当点击Sender的时候,Receiver的值就会发生改变。
总结
自己研究了好久才弄成由于是最新的4.0.0版本的QGC,所以很多之前的教程都不能用了,很多函数名字都变了,对于小白的我来说太不友好了。