在第5节里,我们讲解了初始化图像框QLabel的方法,用于显示图像。在第6节里,运用QDockWidget实现了基本窗口布局。在显示图像时,如果打开比QLabel大的图像,会自动出现滚动条。这样能保证图像完整地显示在窗口中,通过滚动条可以查看整张图像。
同时也带来了问题,因为现在手机相机的像素都很高,随随便便打开一张图像,都会超出软件的窗口大小,显示部分可能只是冰山一角,对图像进行查看或是操作都很麻烦。
铺满窗口与自适应窗口
基于这个问题,提出了一个简单粗暴的解决方法。需要声明的是,这里实现的效果主要是用于学习而不是实际工作,对图像的操作也主要用于学习图像处理的各模块,所以允许图像出现失真情况,即图像在适应窗口的过程中更改了原本大小,造成了图像失真。如果需要高精度,那这个方法就不适合了。
以工具栏为例,创建两个按钮,一个“铺满窗口”,一个“自适应窗口”。顾名思义,前者是将图像铺满整个窗口,可能造成图像变形不协调,后者是保持图像原宽高比,进行缩放,自适应窗口大小。
首先确定思路,创建一个新的工具栏和两个按钮,给两个按钮添加相应槽函数。
// 这里只是个示范,仅是界面效果,可自行更改为其他控件,槽函数才是核心。
QPushButton *button_full = new QPushButton(tr("铺满窗口")); // 创建按钮