服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 详解Qt使用QImage类实现图像基本操作

详解Qt使用QImage类实现图像基本操作

2022-12-25 16:08wendy_ya C/C++

这篇文章主要介绍了Qt如何利用QImage类实现对图像的基本操作,包括图像显示、图像缩放、图像旋转等,感兴趣的小伙伴可以跟随小编一起动手尝试一下

一、项目介绍

利用QImage类实现对图像的基本操作,包括图像显示、图像缩放、图像旋转等。

二、项目基本配置

新建一个Qt案例,项目名称为“ImageTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。

三、UI界面设计

UI界面布局如下:

详解Qt使用QImage类实现图像基本操作

界面中创建了5个控件,其名称和类型如下:

序号 名称 类型 属性
Choose QPushButton text:选择图像
Rotate QPushButton text:图像旋转
Zoom QPushButton text:图像缩放
imagelabel QLabel \
horizontalSlider QSlider minimum:0
maximum:359

四、主程序实现

4.1 widget.h头文件

头文件中声明原始图像img:

?
1
2
public:
    QImage img;//原始图像

声明三个按钮点击槽函数和一个滑动条滑动槽函数:

?
1
2
3
4
5
6
7
8
private slots:
    void on_Choose_clicked();
 
    void on_Rotate_clicked();
 
    void on_Zoom_clicked();
 
    void on_horizontalSlider_valueChanged(int value);

4.2 widget.cpp源文件

定义选择图像槽函数:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//选择图像
void Widget::on_Choose_clicked()
{
    QString path=QFileDialog::getOpenFileName(this,tr("选择图像"),"E:\\image\\",tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
    if(path.isEmpty())
    {
         return;
    }
    else
    {
        if(! ( img.load(path) ) ) //加载图像
        {
            QMessageBox::information(this,tr("打开图像失败"),tr("打开图像失败!"));
            //delete img;
            return;
        }
        //img.load(path);
        ui->imagelabel->setPixmap(QPixmap::fromImage(img));
    }
 
}

定义图像缩放槽函数:

?
1
2
3
4
5
6
7
8
9
//图像缩放
void Widget::on_Zoom_clicked()
{
    QImage* imgScaled = new QImage;
    int width=ui->imagelabel->width()/2;
    int height=ui->imagelabel->height()/2;
    *imgScaled=img.scaled(width,height,Qt::KeepAspectRatio);//对半缩放
    ui->imagelabel->setPixmap(QPixmap::fromImage(*imgScaled));
}

定义图像旋转槽函数:

?
1
2
3
4
5
//图像旋转
void Widget::on_Rotate_clicked()
{
    ui->horizontalSlider->setVisible(true);//显示滑动条
}

定义滑动条值变化槽函数:

?
1
2
3
4
5
6
7
8
9
10
//进度条值变化
void Widget::on_horizontalSlider_valueChanged(int value)
{
    qDebug()<<value;//输出旋转角度
    QImage* imgRatate = new QImage;
    QMatrix matrix;
    matrix.rotate(value);
    *imgRatate = img.transformed(matrix);
    ui->imagelabel->setPixmap(QPixmap::fromImage(*imgRatate));
}

五、效果演示

完整效果如下:

详解Qt使用QImage类实现图像基本操作

到此这篇关于详解Qt使用QImage类实现图像基本操作的文章就介绍到这了,更多相关Qt图像基本操作内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://wendy.blog.csdn.net/article/details/122897518

延伸 · 阅读

精彩推荐
  • C/C++64位linux 编译c提示gnu/stubs-32.h:No such file or directory的解决方法

    64位linux 编译c提示gnu/stubs-32.h:No such file or directory的解决方法

    这篇文章主要介绍了64位linux 编译c提示gnu/stubs-32.h:No such file or directory的解决方法,需要的朋友可以参考下...

    C语言教程网6042021-08-27
  • C/C++C语言单链表版学生信息管理系统

    C语言单链表版学生信息管理系统

    这篇文章主要为大家详细介绍了C语言单链表版学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    印林泉4092021-06-17
  • C/C++C/C++宏替换实现详解

    C/C++宏替换实现详解

    这篇文章主要介绍了C/C++宏替换实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编...

    fater5062021-10-06
  • C/C++C++ 中私有继承的作用

    C++ 中私有继承的作用

    这篇文章主要介绍了C++ 中私有继承的作用的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下...

    freeboy10155242021-06-07
  • C/C++C++将二叉树转为双向链表及判断两个链表是否相交

    C++将二叉树转为双向链表及判断两个链表是否相交

    这篇文章主要介绍了C++将二叉树转为双向链表及判断两个链表是否相交的方法,文中还给出了求两个链表相交的第一个节点列的实现方法,需要的朋友可以参...

    Zhang_H9922021-03-24
  • C/C++OpenCV实现图像腐蚀

    OpenCV实现图像腐蚀

    这篇文章主要为大家详细介绍了OpenCV实现图像腐蚀,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    我有一個夢想9722021-11-17
  • C/C++C语言运用回调函数实现计算器

    C语言运用回调函数实现计算器

    这篇文章主要为大家详细介绍了C语言运用回调函数实现计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    久留不见i10042022-01-20
  • C/C++用C语言实现排雷游戏

    用C语言实现排雷游戏

    大家好,本篇文章主要讲的是用C语言实现排雷游戏,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下...

    莫陌尛.11802022-08-30