Qt学习笔记(二)

问题一:connect函数无法跳转

connect(ui.contrast_slider, SIGNAL(sliderMoved(int)), this, SLOT(contrast_slider_Moved(int position)));

这句代码无法实现槽函数的跳转,可能是什么原因造成的??
在这个connect语句中,存在一些潜在的问题。让我们来逐个排查:

  1. 信号和槽的匹配:确保信号和槽的参数匹配。在你的connect语句中,信号是sliderMoved(int),槽是contrast_slider_Moved(int position)。但是,槽函数的参数名称应该和信号相匹配,所以应该是contrast_slider_Moved(int)而不是contrast_slider_Moved(int position)
  2. 信号和槽的对象:确保信号和槽的对象都正确。在你的connect语句中,信号是来自ui.contrast_slider的,槽是当前类(this)中的一个槽函数。
  3. 信号和槽的连接方式:在Qt中,有两种方式来连接信号和槽:使用旧的Qt信号槽语法和使用新的信号槽语法。在你的connect语句中,使用的是旧的信号槽语法(SIGNALSLOT宏)。确保你的代码中包含了#include <QObject>或者#include <QtCore/QObject>,并且确认已经在类的声明中使用了Q_OBJECT宏。如果你想使用新的信号槽语法,可以直接使用信号和槽的函数指针。
connect(ui.contrast_slider, SIGNAL(sliderMoved(int)), this, SLOT(contrast_slider_Moved(int)));
connect(ui.contrast_slider, SIGNAL(valueChanged(int)), this, SLOT(contrast_slider_valueChanged(int)));

这两个 connect 语句都是用来连接 ui.contrast_slider 的信号与当前类中的槽函数。它们的区别在于所连接的信号不同。

  1. 第一句
connect(ui.contrast_slider, SIGNAL(sliderMoved(int)), this, SLOT(contrast_slider_Moved(int)));

这句代码将 ui.contrast_slidersliderMoved(int) 信号连接到当前类中的 contrast_slider_Moved(int) 槽函数。这意味着当用户移动滑块时,即使滑块的值没有发生改变,也会触发 sliderMoved(int) 信号,并且连接的槽函数 contrast_slider_Moved(int) 将被调用。

  1. 第二句
connect(ui.contrast_slider, SIGNAL(valueChanged(int)), this, SLOT(contrast_slider_valueChanged(int)));

这句代码将 ui.contrast_slidervalueChanged(int) 信号连接到当前类中的 contrast_slider_valueChanged(int) 槽函数。这意味着只有当滑块的值发生改变时,即用户拖动滑块并释放后,才会触发 valueChanged(int) 信号,并且连接的槽函数 contrast_slider_valueChanged(int) 将被调用。

问题二:#pragma once 和 #ifndef 的区别?

#ifndef 可以针对一个文件中的部分代码,而 #pragma once 只能针对整个文件。

问题三:COLOR_BGR2RGB参数的理解

有些图片由于成像原理不同,所以颜色通道不同。在OpenCV中,颜色通道的排列顺序是BGR而不是常见的RGB。因此,当你从OpenCV加载图像时,它们通常以BGR格式存储。如果你希望在OpenCV中处理RGB格式的图像,就需要将图像从BGR转换为RGB。COLOR_BGR2RGB就是用于执行这种转换的常量。

问题四:QImage和Mat的区别?

The QPixmap class is an off-screen image representation that can be used as a paint device.QPixmap类是一个可以用作绘画设备的屏幕外图像表示。可以理解为缓存。

  1. 框架和平台
    • QImage是Qt框架中的类,主要用于图形界面开发。它可以用于处理图像数据,并提供了一些图像的基本操作,如加载、保存、绘制等。
    • cv::Mat是OpenCV(开源计算机视觉库)中的类,专门用于图像处理和计算机视觉任务。它提供了丰富的图像处理功能,如滤波、变换、特征提取等。
  2. 数据存储方式
    • QImage使用了Qt自己的图像数据格式,它以一种设备无关的方式存储图像数据,可以很容易地在不同的平台上显示图像。
    • cv::Mat使用了OpenCV自己的图像数据格式,它以一种更底层的方式存储图像数据,可以提供更高效的图像处理和计算。
  3. 功能和操作
    • QImage提供了一些简单的图像操作,如加载、保存、绘制等,但它的图像处理功能相对有限。
    • cv::Mat提供了丰富的图像处理功能,如图像滤波、变换、特征提取等,可以用于更复杂的图像处理和计算机视觉任务。
  4. 应用场景
    • QImage通常用于图形界面开发,如在Qt应用程序中显示图像。
    • cv::Mat通常用于计算机视觉和图像处理领域,如图像处理算法的实现、图像特征提取、目标检测等。
  • 33
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值