最近做了一个小项目用到qt 因为有 之前搞图像处理的时候小小的用过qt 信号槽什么的 都比较 清楚 但这回界面要求比较高,做的是上位机 从单片机那里串口得到数值之后显示,要的是自己 搞得控件之后控件随着值存在一定的变化
其实 自己也查了很多资料,之前心思用QCustomPlot,但是 太大了,小的话 效果不好还是心思自己 来画一个吧,之后就遇到了各种坑,经历了 十个小时的战斗,终于 ok了,迫不及待给大伙们 分享一下。
首先要明白一下几点
widget和Frame都是个容器,里面还可以放别的控件的升级控件升级之后怎么用相应的 .c 和.h之后就是相应的操作了如下:
Widget 和frame都是可以从UI中拖出来的 你拖哪个 主要取决于你的控件提升基于什么 此处 用的是Frame此处注意一定要 注意自己的QFrame 自己的定义控件的名称 此处将Frame 改为pss(这个地方我吃了大亏啊,看了好久bug,但是update之后UI就是不变,都知道进了paintEvent但是UI就是不变,还以为见了鬼了,后来才发现我一直操作的变量不是UI中的一直都是自己 定义的一个,所以就算是UI 重新画图了,但是 你没有把他放到UI中,而UI的变量是另一个,所以可以说的上是一直我都是把两个变量当成一个。。。很尴尬,此处听不懂看完下面的就懂了) 2. 提升 首先把.c .h 放到工程中去,上面的图里的已经是Frame 提升过得了 正常来讲应该右击 控件里面有提升为点开提升即可,把.c 和.h 的名称写上去此处不讲了参考 http://www.cnblogs.com/blfshiye/p/5179672.html
现在相当于准备工作做完了 就是提升好了也可以用UI的那个控件了
3. 基本上就上面两个代码在mainwindow.cpp中 其他的在 .c .h中改的 自己添加函数和修改都可以 要注意的是 ui->pss->repaint(); 函数一定要引用,要不没啥用了,这个函数和update()函数差不多用哪个效果差不多,但网上说有差别,但我的这个控件差别不大 还有就是这个 控件的 UI更新最好用在一个SLOT中
效果图
注释都有大家自己看咯。
以下这个是我自己随便写的一个比较简单的能看出刷新效果的程序
http://download.csdn.net/detail/qq_33431368/9834615