代码来自《QT5.9c++开发指南》,因为实现了图片的遍历显示,对于将来编写ImageShop一类的图像程序来说将非常有用(这个程序目前存在一定问题,在研究过程中进行解决)


一、基本功能
基于"混合UI"界面设计,以及QTreeWidget、QDockWidget使用(通过将一个QTreeWidget组件防止在QDockWidget区域上,并设置其可以在主窗体的左边或右边停靠,也可以浮动),同时实现了目录及文件的查看、缩放等操作。
1、界面布局设计
可以看出QT中布局的良好层次结构,比如前面所说的在DockWidget上防止QTreeWidget,并且使用水平布局使treeWidget填充停靠区。
在工作区右侧是一个QScrollArea,通过在其中放置一个QLabel组件,并且利用QLabel的pixmap属性显示图片,这样实现了滚动。
在主窗口的构造函数中,将ScroolArea组件设置为中心组件之后,便自动出现分割条
【而这些功能,如果在MFC中实现的话,都是要大费脑筋的,这里QT的却将很多工作简化了;//得到scrollArea的高度
int realw=curPixmap.width();//原始图片的实际宽度
pixRatio=float(w)/realw;//当前显示比例,必须转换为浮点数
QPixmap pix=curPixmap.scaledToWidth(w-30);
ui->LabPicture->setPixmap(pix);
}

void MainWindow::on_actZoomFitH_triggered()
{//适应高度显示图片
int H=ui->scrollArea->height();//得到scrollArea的高度
int realH=curPixmap.height(); //原始图片的实际高度
pixRatio=float(H)/realH; //当前显示比例,必须转换为浮点数
QPixmap pix=curPixmap.scaledToHeight(H-30); //图片缩放到指定高度
ui->LabPicture->setPixmap(pix); //设置Label的PixMap
}

void MainWindow::on_actZoomRealSize_triggered()
{ //实际大小显示
pixRatio=1; //恢复显示比例为1
ui->LabPicture->setPixmap(curPixmap);
}