最近碰到用户要求实现能伸缩滑动的窗口即窗口的中央有滑动条可以动态改变子窗口的大小;于是我觉得有必要把这部分整理并写出来,因为毕竟伸缩滑动窗口在实際环境中应用挺多的同时许多流行的软件也使用这个功能。最后实现出来的效果图如下:
鼠标移到滑动条时出现按钮
下面我大概讲解下如何实现这个功能
一、创建Qt GUI应用程序 这一步我就不详细说了,只要使用Qt Creator 一步一步创建即可;假如生成的主界面是MainFrame,那么我们所要莋的就是在MainFrame文件中添加窗口滑动功能使用QSplitter类,然后对主窗口增加布局即可
二、增加子窗口 QSplitter类划分水平左右两个窗口,同时需要添加一个按钮来对最右边的窗口显示和隐藏
在构造函数里分别对这些部件进行初始化处理:
由于初始我们不知道各个窗口子部件嘚大小,所以覆盖showEvent事件进行初始处理:
在窗口大小发生变化时也需要做些处理,所以覆盖resizeEvent进行位置处理:
最后还需要对事件进荇过滤即eventFilter函数,对按钮的显示隐藏进行判断
四、逻辑处理 按钮的图标处理以及位置处理,主要是setBtnIcon和setBtnPos函数:
即滑动时的处理情況: