Qt-Image Viewer Example

本文介绍QLabel和QScrollArea在Qt中如何显示图片并实现缩放功能。使用ImageViewer应用程序,用户可以打开、打印图像文件,并通过菜单项进行放大、缩小等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QLabel通常用于显示文本,但也可以显示图像。 QScrollArea提供了另一个小部件的滚动视图。如果子窗口小部件超出框架的大小,则QScrollArea会自动提供滚动条。
下面这个例子演示了Qlabel如何扩展其内容的能力QLabel::scaledContents,QScrollArea自动调整内容大小的功能QScrollArea::widgetResizable,可用于实现缩放和缩放功能。此外,该示例显示如何使用QPainter打印图像。
这里写图片描述

使用Image Viewer应用程序,用户可以查看自己选择的图像。 “文件”菜单为用户提供了以下功能:
Open… - Open an image file
Print… - Print an image
Exit - Exit the application

加载图像后,我们可以之下执行下列的功能:
Zoom In - Scale the image up by 25%
Zoom Out - Scale the image down by 25%
Normal Size - Show the image at its original size
Fit to Window - Stretch the image to occupy the entire window
ImageViewer Class Definition
ImageViewer类继承自QMainWindow。除了重新实现构造函数,并创建多个私有槽以方便菜单项。还创建了四个私有函数。

在构建ImageViewer小部件时,使用createActions()和createMenus()。当加载新图像时,或当“自适应窗口”选项被切换时,使用updateActions()函数来更新菜单选项。

这里写图片描述

### 配置和使用 OpenCV 的方法 要在 Qt 跨平台项目中集成并使用 OpenCV 库,需要完成以下几个方面的操作: #### 1. 安装和编译 OpenCV 下载 OpenCV 源码后,可以通过 CMake 工具对其进行配置和编译。以下是具体的操作说明: - 使用 CMake 创建构建文件时,需指定生成的目标路径以及是否启用特定模块(如 GPU 支持)。如果目标是跨平台支持,则应确保禁用依赖于本地硬件特性的功能[^1]。 - 编译完成后,会得到一组静态或动态链接库文件(`.lib` 或 `.dll`),它们将在后续步骤中被引入到 Qt 项目。 #### 2. 设置 Qt Creator 中的环境变量 为了让 Qt 可以找到已安装好的 OpenCV 库及其头文件,在设置好项目的 pro 文件之前还需要调整系统的 PATH 环境变量或者通过 Qt Creator 自身来管理这些外部依赖项。 - 将包含 DLLs 的目录加入运行时搜索路径; - 对于 MinGW 版本下的 Windows 用户来说,可能还要额外复制一些标准模板库的相关 dll 到可执行程序所在位置附近以便正常加载。 #### 3. 修改 .pro 文件以包含必要的标志与路径 编辑您的应用程序对应的 .pro 文件,并添加如下内容: ```plaintext INCLUDEPATH += /path/to/opencv/include \ /path/to/other_headers_if_needed/ LIBS += -L/path/to/opencv/libraries/ -lopencv_core -lopencv_highgui ... ``` 这里 `/path/to/...` 替换为您实际解压后的 opencv 目录结构中的 include 和 lib 子文件夹的位置;而 `-lxxx` 参数则对应各个子模块的名字前加上字母 'l' 表示链接该共享对象或档案形式的库。 #### 4. 在代码里调用 OpenCV 功能 一旦完成了上述准备工作之后就可以像平常那样编写基于 open cv api 的 c++源代码了。下面给出一个简单的例子展示如何读取图片并在窗口显示出来: ```cpp #include <QApplication> #include <QWidget> // Include the necessary headers from OpenCV. #include <opencv2/core.hpp> // Basic OpenCV types and functions. #include <opencv2/highgui.hpp> // GUI-related functionality. int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(800, 600); window.setWindowTitle("Qt with OpenCV Example"); // Load an image using OpenCV's imread function. cv::Mat img = cv::imread("/absolute/or/relative/image_path.jpg"); if (img.empty()) { // Check whether loading was successful. qDebug() << "Could not load image!"; return -1; } // Create a named window to display images. cv::namedWindow("Image Viewer", CV_WINDOW_AUTOSIZE); cv::imshow("Image Viewer", img); // Show loaded picture inside created window. int keyPressValue = cv::waitKey(); // Wait until any key pressed by user. if(keyPressValue != -1){ std::cout<<"User Pressed Key!"<<std::endl; } return app.exec(); } ``` 以上就是关于如何在 Qt 跨平台项目中配置和使用的全部过程概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值