结合QLable和QScrollArea显示一个图片。
QLable典型用于用户展示文本,但是也能展示图片。QScrollArea提供了一个滚动视图,如果子控件超过了框架限制,QScrollArea自动提供滚动工具。
ImageViewer类定义:
继承于QMainWindow,重写了constructor,创建了几个私有槽实现菜单入口,创建了四个私有函数。
构造ImageViewer类时使用了createActions()、createMenus();当新的图片被加载后或者“适应窗口”选项被触发后,updateActions函数更新菜单入口。Zoom槽使用scaleImage()函数实现放大缩小,scaleImage使用adjustScrollBar保存指针。
ImageViewer类实现:
- ImageViewer::ImageViewer():构造函数实现。
- void ImageViewer::open():open() slot为用户显示了一个文件窗口,最简单的方式使用QFileDialog,用QFileDialog::getOpenFileName返回用户选择的文件名,如果用户选择取消,那么QFileDialog得到的是一个空串,我们使用QMessageBox提醒用户。
- void ImageViewer::print():print() slot为用户提供了图片加载到应用的功能。如果应用在debug模式中built,那么Q_ASSERT宏将会进行扩展检查。在release模式中,这个宏就会自动忽略,宏的设置在应用的.pro文件中。加载的方式:在.pro文件中添加qmake "CONFIG += debug" foo.pro或者qmake "CONFIG += release" foo.pro。
- void ImageViewer::zoomIn();void ImageViewer::zoomOut();void ImageViewer::normalSize();
- void ImageViewer::fitToWindow():fitToWindow() slot当用户触发了“适应窗口大小”选项时,该函数被调用。
- void ImageViewer::about():about slot用于创建一个message box描述这个例子程序展示的是什么。
- void ImageViewer::createActions():