使用C++和Qt的涂鸦程序(二)
项目源代码
https://github.com/drink-crow/graffiti
使用C++和Qt的涂鸦程序(一)
使用C++和Qt的涂鸦程序(三)
UI设置
mainframe类:class Graffiti
设置UI界面纯粹是个体力活,没有什么值得细说的。讲讲本程序的类构成好了,可以帮助快速阅读源代码
Graffiti类就是程序的主界面类。graffiti就是涂鸦的意思。
Qt Deigner里的设置如上图,摆上一些pushbutton,lineedit,toolbutton,lebel,combobox,再加上一点布局。Qt在简单布局上还是挺方便的。
控件的名字我都定义得比较长,看起来比较啰嗦。实际上非常有必要,做控件的名字一定要长要细,一定不能有缩写。因为控件往往会有数十个,为了避免过了一段时间不知所云还是写上详细的名字比较好。
ui文件单纯用来布局,控件的一些设置写在代码里,在Qt Deigner里定义容易遗漏,而且改起来麻烦。
graffiti.h里除去一些界面用到的槽函数,信号,和一些保存状态用的私有变量。
值得特别关注的是这个自定义的线程控制对象。这个对象开启一个新的线程来运算涂鸦,以防大量的运算下主线程直接假死。
graffitiThreadController workerThreadController;
稍后将介绍这个类。
workerThreadController.startGraffiti(s, ui.pixelRadiusDoub