版权声明
无需授权即可转载

界面布局

东西多了,就得收拾,要不就看着乱,QT里面是通过布局来收拾这一对Widgets,基本布局有四种,分别是

  • QHBoxLayout
  • QVBoxLayout
  • QGridLayout
  • QStackedLayout

前三个是二维布局,就是水平放置,垂直放置,在XY坐标系内放置,第三个是所谓的三维布局,就是可以叠着放,为了看得明白点,我在程序里面弄几个方块,然后摆着看看就明白了,其实这些东西在用了QtDesigner之后起始也没必要在代码里写,但是至少得知道原理。
为了用色块来看Layout的排列形式,需要自定义一个能显示不同颜色的Widget,代码如下
image.png
这段代码没必要理解,这节重点也不在这,用法就是Color(“red”)出来的就是红色块
image.png
这段代码运行下,就是这个样子的
image.png
那水平排列很简单了,就是把代码中的QVBoxLayout换成QHBoxLayout,出来就是这个样子的
image.png
当然也可以两个布局混着来
image.png
之后就是这个样子的
image.png
色块和色块之间的间隙可以调整,通过setContentsMarginssetSpacing就可以实现,可以自己试试
Grid的布局也可以理解成栅格布局,就是在一个XY坐标系内按照X,Y的坐标放置Widget
image.png
基本就这意思,0,0坐标就是左上角,3,3就是右下角,当然具体3,3这个位置坐标是什么,完全可以自己去定义
image.png
出来后就是下图这个样子
image.png
是不是挺没意思的,折腾半天,其实没点实际性的东西,我也这么觉得,所以我的加快速度,尽快进入实质性的东西,这些皮毛的画方格完全可以在QtDesigner中去研究,用代码研究这些太浪费时间
窗口叠加先不写了,在tab切换窗口上比较实用,目前也用不上,等到后续的真实项目能用到了,在折回头看吧,写多了其实看得人也记不住

事件

界面中处理最多的就是人和界面的交互,人的操作叫做事件,界面捕捉到这些事件后就需要去处理,用啥去处理呢,用Event Handler,Handler这个词不太好翻译成人话,可以理解为对这个操作事件的处理程序,那用的最多的Event Handler那肯定非鼠标莫属了,常见的Handler有

  • mouseMoveEvent
  • mousePressEvent Mouse
  • mouseReleaseEvent Mouse
  • mouseDoubleClickEvent

看单词意思就知道干嘛用的,EventHandler里面可以传入事件对象,事件对象有一些属性可以使用,这段话是不是不知道在说啥,下面这个例子就说明一切了,我想移动鼠标获取窗口坐标
image.png
运行后在窗口上按住鼠标,然后移动,坐标就出现了
这一块要明白的就是Event Handler都有些啥,这个e,就是事件对象都有些啥属性和方法让我们用,知道这些就够用了。
Event Handler,点击进去选择一个事件,之后再点击就能看到属性和方法,比如QMouseEvent Class
是不是觉得事件和之前说的信号和槽一回事,我也这样觉得,但是根本不用纠结这些区别,编程这个事就跟鲁迅一个小说里说的一样,走的人多了,就成了路,代码就是一个套子,该怎么用其实早都在那了,用习惯了,谁还在乎他们之间有啥区别