Qt调用OpenCV汇总(1)

2023-05-16

//*************************************************************************************************************1

在Qt Creator上新建一个项目。
右键新项目>>添加库…>>外部库>>选中库文件路径>>下一步,完成,添加到.pro文件中。

在这里插入图片描述
然后再在pro文件中手动输入下面代码:

INCLUDEPATH += D:\opencv\build\include\
               D:\opencv\build\include\opencv\
               D:\opencv\build\include\opencv2\

当然每个人OpenCV的安装路径是不一样的,你要找到你的安装路径下。
然后举个例子吧。
.pro文件:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
INCLUDEPATH += D:\opencv\build\include\
               D:\opencv\build\include\opencv\
               D:\opencv\build\include\opencv2\
win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342d
else:unix: LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342
INCLUDEPATH += D:/opencv/build/x64/vc14
DEPENDPATH += D:/opencv/build/x64/vc14
SOURCES += \
    main.cpp \
    mainwindow.cpp
HEADERS += \
    mainwindow.h
FORMS += \
    mainwindow.ui
  •  

main.cpp

#include "mainwindow.h"
#include <QApplication>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();


    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QMainWindow>
#include <QFileDialog>//文件对话框
#include <opencv2/core/core.hpp>//opencv相关的库文件
#include <opencv2/highgui/highgui.hpp>
using namespace cv;


namespace Ui {
class MainWindow;
}


class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    explicit MainWindow(QWidget *parent = 0);//explicit是显式的意思,构造函数,继承父类
    ~MainWindow();//析构函数


private slots://私有槽函数
    void on_pushButton_clicked();//声明按键


    void on_pushButton_2_clicked();


private:
    Ui::MainWindow *ui;
    Mat image;
};


#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"//头文件
#include "ui_mainwindow.h"//ui界面头文件


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->pushButton_2->setEnabled(false);//初始按键2不能使用
}


MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()//按键定义
{
    //调用窗口打开文件
    QString filename = QFileDialog::getOpenFileName(this,
                                                    tr("open image"),
                                                    ".",
                                                    tr("Image file(*.png *.jpg *.bmp)"));
    image = imread(filename.toLocal8Bit().data());
    if(image.data) {
        ui->pushButton_2->setEnabled(true);//按键2恢复
    }
    //将Mat图像转换为QImage图像,才能显示在label上
    QImage img = QImage((const unsigned char*)(image.data),
                        image.cols, image.rows, QImage::Format_RGB888);//格式转换
    //设定图像大小自适应label窗口的大小
    img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
    ui->label->setPixmap(QPixmap::fromImage(img));
}


void MainWindow::on_pushButton_2_clicked()
{
    flip(image, image, 1);
    QImage img = QImage((const unsigned char*)(image.data),
                        image.cols, image.rows, QImage::Format_RGB888);
    img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);


    ui->label->clear();//清除窗口
    ui->label->setPixmap(QPixmap::fromImage(img));//显示其它图像
}

mainwindow.ui
在这里插入图片描述

然后就可以运行,测试一下代码了。。。
在这里插入图片描述

//**************************************************************************2

QT creator中使用opencv

    最近要用到opencv做图像方面的东西,网上很多是用VS加opencv,但自己对VS不怎么喜欢,想用QT Creator。在网上搜索了很多资料,终于花了一天的时间,在QT Creator上能使用opencv了。

    需要的软件:(1)QT Creator。我的版本是4.8.5。这个版本还是在学习亚飞的QT Creator的时候安装的,网上有说QT版本低,而opencv版本高的话,可能在执行mingw32-make命令会报错。因此为了以防万一,我下载的低版本的opencv

                      (2)opencv。我的版本是2.3.0

                     (3)cmake 下载地址http://www.cmake.org/cmake/resources/software.html

另外我的计算机的操作系统是xp,32位的。

    首先将QT creator, cmake安装好,这个蛮简单的。而安装opencv,设置解压路径就可以了。安装CMake要注意:(1)安装路径不能有中文和空格(2)勾选加入所有境变量中。

    将C:\Qt\mingw\bin加入系统变量。

    CMake OpenCV,使用CMake(http://www.cmake.org/)生成OpenCV库的makefile文件,需要注意的是解压出来的OpenCV存储路径中的文件夹不要带有空格或者中文(我的是E:\OpenCV,不要用类似于E:\工程\opencv, E:\Open CV这种),打开CMake,指定源码位置(就是OpenCV解压出来的地方)和存放生成文件的地方,Configure弹出如图对话框,选择MinGW Makefiles和Specify native compilers

    

跳出对话框用以指定C++和C的编译器路径,C用gcc.exe,在QtSDK目录下的mingw/bin子目录中,C++用g++.exe:

 

然后再次Configure,无错误后选中WITH_QT

再次Configure会出现下图信息提示找不到Qt的Qmake可执行文件

 

手动指定Qmake.exe所在目录

(注意这张图是我在网上复制的别人的)

再次Configure,无错误后 Generate。

 

 1> Cmd命令 转到Generate到的目录(我的是F:\OpenCV)

  cd F:\OpenCV

 2> Cmd命令 编译文件

 >> mingw32-make

 3> Cmd命令 编译INSTALL

 >> mingw32-make install

 

 

下面开始配置Qt Creator的OpenCV开发环境,拷贝下面三个文件夹放在同一个文件夹下(只需这三个目录,其余生成的文件和文件夹可以删除,以节省磁盘空间)

 

(1)OpenCV-2.3.0安装目录下的build/include目录

(2)CMake目标路径下,MinGW编译后的bin目录

(3)CMake目标路径下,MinGW编译后的lib目录

拷贝三个目录到同一目录后的结构如下图(我删除了原来的CMake目标目录中的其他目录,拷贝进来了include目录)

 

 将bin目录添加到系统环境变量

至此Qt Creator下的OpenCV开发环境已经配置好,下面在Qt Creator下测试是否已经配置成功

打开Qt Creator,新建一个空工程,然后添加一个cpp文件,任意命名

 在pro文件中添加如下OpenCV的依赖文件

INCLUDEPATH+=C:\OpenCV\include\opencv\

                    C:\OpenCV\include\opencv2\

                    C:\OpenCV\include

 

LIBS+=C:\OpenCV\lib\libopencv_calib3d230.dll.a\

        C:\OpenCV\lib\libopencv_contrib230.dll.a\

        C:\OpenCV\lib\libopencv_core230.dll.a\

        C:\OpenCV\lib\libopencv_features2d230.dll.a\

        C:\OpenCV\lib\libopencv_flann230.dll.a\

        C:\OpenCV\lib\libopencv_gpu230.dll.a\

        C:\OpenCV\lib\libopencv_highgui230.dll.a\

        C:\OpenCV\lib\libopencv_imgproc230.dll.a\

        C:\OpenCV\lib\libopencv_legacy230.dll.a\

        C:\OpenCV\lib\libopencv_ml230.dll.a\

        C:\OpenCV\lib\libopencv_objdetect230.dll.a\

        C:\OpenCV\lib\libopencv_video230.dll.a

这样以后,就可以在主函数中正常编写自己的程序了。

//**********************************************************************************3

用Qt Creator编译opencv并配置开发环境

前言

opencv是一个跨平台计算机视觉库,使用前需要把它编译成二进制的静态库和动态库,之后在代码中直接连接到二进制库。

网上很多教程都是用CMake配合MinGW编译opencv,其中需要用到命令行操作,其实有更简单的方法,Qt Creator支持CMake,可以直接用Qt Creator在图形界面中编译好opencv。

对于各个C++ IDE的看法

我试过vs2015,eclipse,code blocks,Qt Creator,各有优缺点。

  • vs2015
    opencv for windows中有已经编译好的文件可以直接调用,不需要再手动编译opencv。但是vs太过庞大,功能复杂,打开界面十分缓慢,用起来有点麻烦,不适合初学者。并且vs只能在windows上用,我更喜欢多平台通用的IDE。

  • eclipse
    打开界面的速度比vs还要慢,果断放弃。

  • code blocks
    功能强大,界面不太漂亮,比vs还要复杂的界面让新手无所适从。

  • Qt Creator
    Qt Creator的界面很简洁美观,启动速度很快,并且适合以后用Qt开发图形交互界面,支持windows、Linux、Mac多个平台,内联CMake,十分适合新手作为开发环境。


准备

  1. 安装CMake
  2. 安装Qt Creator
  3. 下载opencv

1. 安装CMake

编译opencv需要用到CMake这个工具。

  1. 下载:https://CMake.org/download/
    建议下载安装版的,这个可以自动加入系统环境变量。

  2. 安装,选择第二个,为所有用户添加系统路径。之后Qt可以自动找到CMake。

2. 安装Qt Creator

  1. 下载:https://www.qt.io/download-open-source/#section-2
    选择离线安装包,在线安装太慢,经常会安装失败。

    选择MinGW版本。VS 版本还需要安装对应的VS,单独安装Qt 是不可用的,而MinGW版本自身带有MinGW。

    建议下载最新版本,因为里面带的MinGW版本较高,如果MinGW版本比opencv需要的版本低会编译失败。

  2. 安装:安装路径不能有空格,我安装在默认路径,然后一路NEXT。

3. 下载opencv

下载opencv for Linux
http://opencv.org/downloads.html

opencv for windows 跟 opencv for Linux 的源码是一样的,只是
opencv for windows 里面多了以编译好的 opencv,这个我们不需要,只要下载源码就行了。

如果编译失败,试试其他版本的opencv。
我在Ubuntu上编译3.1版失败,编译2.4.13和3.0.成功,在windows上编译3.1成功,3.0却失败,试了不少于10次,之后才意识到跟MinGW版本有关,MinGW版本要跟opencv版本对应才能编译成功。


编译opencv

  1. 确认Qt成功找到 CMake
    打开 Qt Creator,工具->选项->构建和运行->CMake,如果之前 CMake 配置好了系统路径,这里应该会自动加载到系统路径,否则手动指定CMake的路径。

  2. 用 Qt 打开 opencv 项目
    【Open Project】打开 opencv 的 CMakeLists.txt

    之后会出现一个 Configure Project 窗口,配置编译时产生的中间文件保存的路径,这些不用改,直接点击 Configure Project 按钮。中间文件会保存在跟 opencv 的文件夹在同一路径的一个文件夹,编译完删掉就好了。

  3. 进入【项目】,编译构造配置选择Release。

    然后等几分钟,这段时间 Qt 正在读取 CMakeLists.txt 文件,当在概要信息看到 Configuring done 和 Generating done 就读取完了。

  4. 进入【项目】,找到 CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。其他配置保持默认。然后点击 Apply Configuration Changes。未保存的内容会是粗体字,已改变的配置将会是斜体字,再点一次 Apply Configuration Changes,Apply Configuration Changes 按钮将会变成灰色。

  5. 再到构建步骤,详情,勾选install,然后点右下角的“锤子”,开始构建。构建过程要保持网络通畅,因为构建时会下载部分文件。这个过程会花半个小时左右,当“编译输出”中显示“正常退出”,表示构建成功,在 CMAKE_INSTALL_PREFIX 路径中可以看到产生的文件。如果编译失败,则换个opencv版本,重新尝试。


配置opencv开发环境

编译好的opencv会有以下这些文件夹,把这些文件放到合适的位置。我就放在c盘opencv文件夹里了。

  1. 配置opencv系统路径
    对计算机右键->属性->高级系统配置->环境变量>Path 变量里加入 opencv 的 bin 文件夹的路径,用分号跟其他路径分隔。

  2. 新建Qt项目

    常用的项目类型的说明:

    • Qt console Application:Qt的控制台项目,不创建Qt的图形界面,只会打开一个cmd窗口。
    • 【Non-Qt Projectt】->plain C/C++ Application:创建的项目不带有Qt的库,最适合学习C/C++。创建后主程序就已存在一个Hello World!示例。

  3. 给qt项目添加头文件路径和静态库路径
    在.pro文件中添加以下代码。每次新建项目都要添加,好在复制粘贴很方便。

INCLUDEPATH += C:/opencv/include \
               C:/opencv/include/opencv \
               C:/opencv/include/opencv2

LIBS += C:/opencv/x86/mingw/lib/libopencv_*


测试

新建一个plain C/C++ Application,写入以下代码,cvLoadImage( )函数里填入一张照片的路径,如果能编译成功并显示照片就配置成功了。

注意文件的路径是正斜杠,不是windows路径的反斜杠,如果用反斜杠得这样写:"D:\\Pictures\\RoboMasters.jpg"

#include "opencv/highgui.h"

int main(int argc, char *argv[])
{
    IplImage* img = cvLoadImage("D:/Pictures/RoboMasters.jpg");
    if (img == NULL)
        return 1;
    cvNamedWindow("abc",CV_WINDOW_AUTOSIZE);
    cvShowImage("abc",img);
    cvWaitKey(0);
    cvReleaseImage(&img);
    cvDestroyAllWindows();
    return 0;
}

关于Qt的动态库

在Qt中用Ctrl+R可以成功运行程序,但是直接双击程序运行却会提示缺少libgcc_s_dw2-1.dll,这是因为缺少Qt的动态库。

解决方法是发布软件时把动态库添加到工程目录里。方法如下:

  1. 添加系统环境路径
    C:\Qt\Qt5.7.0\5.7\mingw530_32\bin
    C:\Qt\Qt5.7.0\Tools\mingw530_32\bin
    两个路径之间用分号“;”分隔。

    做完这一步可以在自己电脑直接双击打开编译好的软件 ,但是在别人电脑里依然是缺少文件。

  2. 打包动态库
    Qt 官方开发环境里自带了一个工具:windeployqt.exe。
    win+r 然后输入 cmd 打开命令提示行,切换到编译完的软件目录下,假设软件名叫 abc.exe,在命令行里输入 windeployqt abc.exe,就会把需要的动态库都复制到该软件目录下

  3. //**********************************************************************************4

  4. 在Qt Creator开发环境中配置OpenCV库的简明步骤

  5. 1、说明

    OpenCV库是一套全面而简洁的计算机视觉算法库,OpenCV主要由一些C及C++函数和类构成。在Windows平台上开发视觉算法时,Visual Studio IDE无疑是一款强大的工具软件,但是,如果要给我们的OpenCV视觉算法加上漂亮的用户界面,即GUI,将会变得有些麻烦。在Visual Studio中,可以将OpenCV与MFC相结合开发界面,然而,MFC太庞大,且涉及到多线性(Multi-Thread)、先进图形图像显示、跨平台等需求时,使用MFC开发OpenCV算法界面会变得让人抓狂(姑且这么说吧)。另一种技术,就是在Visual Studio中,我们在视觉解决方案中可以建立C#工程,通过C#构建界面,这里,Visual Studio自带强大的Blend界面设计工具,那么问题又来了:C#和C++语言体系不同,C#为解释型语言,C++为编译型语言,OpenCV本身为C++代码,二者在代码和数据交互上存在太多麻烦的转换,转换的过程浪费开发时间。

    因此,涉及到本文的主要目的,即:在Qt中引入OpenCV库,将Qt擅长的界面和OpenCV擅长的视觉算法有机结合起来,从而让我们快速的进行项目的构建和开发。

     

    2、配置

    网上也有不少相关方法,本文说的是简明步骤,因此只简要描述一下关键的步骤。

    1、手头上要有OpenCV库,推荐的OpenCV库文件目录组织方式为:一个opencv主目录,一个include子目录(存放头文件),一个bin子目录(存放动态链接库.dll文件),一个lib文件(存放静态链接库.lib文件)。这样的组织方式更容易配置项目且便于移动和共享。(这里可下载最新的OpenCV库文件)

    2、正确安装的Qt及Qt Creator开发环境。这里要注意Qt Creator构建套件部分的设置,下图为我的设置。尤其要正确设置编译器和调试器。

    3、将OpenCV文件放置在某个磁盘位置,例如D盘根目录,如下图。将bin目录添加到系统的环境变量PATH中,添加完成后要重启系统。

     

    4、在Qt Creator中新建工程项目,在项目配置文件.pro中填入如下红色框中的命令,然后点击菜单栏“构建”->“执行qmake”。

     

    5、完成以上工作后,便可在工程中引入OpenCV头文件,并编写调用代码了。如下图所示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt调用OpenCV汇总(1) 的相关文章

  • 检测骰子的上侧

    是否可以检测骰子的上面 虽然从顶部看这将是一项简单的任务 但从许多角度来看 可以看到多个侧面 Here is an example of a dice feel free to take your own pictures 您通常想知道自己
  • OpenCV:视频录制太快

    我有一个简单的录像机 录制来自网络摄像头的视频 theVideoWriter open filename countAsString ext CV FOURCC X V I D 30 Size 1920 1080 true while re
  • Pyinstaller“无法执行脚本 pyi_rth_pkgres”并且缺少软件包

    这是我第一次在这里发布问题 因为我的大部分问题已经被其他人回答了 我正在 python 中开发 GUI 应用程序 并尝试使用 pyinstaller 将其打包到单个文件夹和 exe 中 以便于移植 目前 我使用 Windows 10 和 a
  • 如何计算立体视觉的基本矩阵

    我正在尝试编写一些代码来计算基本矩阵以确定立体图像之间的关系 我从大多数人推荐的 Hartley 和 Zisserman 书开始 但它没有任何实际示例 并且示例代码是在 MATLAB 中 而我没有 然后我切换到这个比较实用 里面有实际例子
  • 如何使用 SimpleBlobDetector 获取 blob 的额外信息?

    robot sherrick 回答了我这个问题 https stackoverflow com a 13534094 1705967 这是他回答的后续问题 cv SimpleBlobDetectorOpencv 2 4 中的 看起来非常令人
  • 如何将图像从 np.uint16 转换为 np.uint8?

    我正在创建一个图像 image np empty shape height width 1 dtype np uint16 之后我将图像转换为 BGR 模型 image cv2 cvtColor image cv2 COLOR GRAY2B
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 将线性数组转换为二维矩阵

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • OpenCV Android - 无法解析相应的JNI函数

    我正在尝试按照此处概述的本教程使用 Opencv 设置 Android Studio https www youtube com watch v OTw GIQNbD8 https www youtube com watch v OTw G
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • 如何将k4a_image_t转换为opencv矩阵? (Azure Kinect 传感器 SDK)

    我开始尝试使用 Azure Kinect Sensor SDK 我经历了官方操作指南 https learn microsoft com en us azure Kinect dk about sensor sdk sensor sdk 我
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 在 HSV 颜色空间内定义组织学图像掩模的颜色范围(Python、OpenCV、图像分析):

    为了根据颜色将组织学切片分成多个层 我修改了 OpenCV 社区提供的一些广泛分布的代码 1 我们的染色程序用不同的颜色标记组织横截面的不同细胞类型 B 细胞为红色 巨噬细胞为棕色 背景细胞核为蓝色 I m interested in se
  • Python 2.7从非默认目录打开多个文件(对于opencv)

    我在 64 位 win7 上使用 python 2 7 并拥有 opencv 2 4 x 当我写 cv2 imread pic 时 它会在我的默认 python 路径中打开 pic 即C Users Myname 但是我如何设法浏览不同的目
  • OpenCV OpenNI 校准kinect

    我使用 home 通过 kinect 进行捕捉 capture retrieve depthMap CV CAP OPENNI DEPTH MAP capture retrieve bgrImage CV CAP OPENNI BGR IM
  • opencv - 在图像中绘制轮廓

    我正在尝试在图像周围绘制轮廓 我可以看到找到了轮廓 但无法绘制轮廓 轮廓的颜色似乎是两种 黑色和白色 颜色中的一种 import cv2 import numpy as np import matplotlib pyplot as plt
  • 体系结构 x86_64 的未定义符号:用于 caffe 构建

    我收到此错误的原因是caffe http caffe berkeleyvision org 建造 我该如何修复它 我使用的是 Mac OSX Yosemite 10 10 1 控制台日志 Machida no MacBook Air caf

随机推荐

  • MFC添加自定义消息及重写消息过程

    由于MFC中无法通过类向导来自定义消息 xff0c 所以需要手动添加 xff0c 主要过程如下 xff1a 本文基于vs2008下通过线程实现数据实时更新的对话框运用程序 1 定义消息 xff08 Resource h文件中 xff09 x
  • C#操作注册表方法

    1 xff1a 要操作注册表 xff0c 我们必须要引入必要的命名空间 xff1a using Microsoft Win32 在这个命名空间里面包含了许多注册表相关的类 xff0c 足够我们使用了 2 xff1a 命名空间里面提供了一个类
  • 怎样测试ESP8266wifi模块?

    这里测试的方法是用USB TTL转换电路进行的测试 接线图如下所示 xff1a ESP8266引脚图如下 xff1a 因为ESP8266需要3 3V电压供电 xff0c 所以USB TTL的3 3V电压 xff0c GND分别与ESP826
  • Qt信号与槽机制

    一 简介 就我个人来理解 xff0c 信号槽机制与Windows下消息机制类似 xff0c 消息机制是基于回调函数 xff0c Qt中用信号与槽来代替函数指针 xff0c 使程序更安全简洁 信号和槽机制是 Qt 的核心机制 xff0c 可以
  • QT中手动释放堆中的对象(new 出来的)

    Qt内存自动释放有两个前提条件 xff1a 1 必须是QObject的派生类 2 必须指定了parent对象 即 xff1a Qt 中 父亲被删除的时候会自动销毁他的孩子 所以如果New出来的并且没有父亲 那么则需要手动删除它 需要 xff
  • c++指针概念回顾

    前言 复杂类型说明 要了解指针 多多少少会出现一些比较复杂的类型 所以我先介绍一下如何完全理解一个复杂类型 要理解复杂类型其实很简单 一个类型里会出现很多运算符 他们也像普通的表达式一样 有优先级 其优先级和运算优先级一样 所以我总结了一下
  • c语言指针详解(概念示例)

    指针是 xff23 语言中广泛使用的一种数据类型 运用指针编程是 xff23 语言最主要的风格之一 利用指针变量可以表示各种数据结构 xff1b 能很方便地使用数组和字符串 xff1b 并能象汇编语言一样处理内存地址 xff0c 从而编出精
  • C#中模态对话框释放问题

    以下实例中可以测出 xff0c 当一个模态对话框返回DialogResult的结果后 xff0c 对话框自动隐藏 xff0c 但对话框db并没有彻底释放掉 xff0c 因此 仍可以访问db中的成员 xff0c 想要彻底释放需要手动加上db
  • qt中设置窗体大小

    在我们的编程中 xff0c 我们有时候会想让我们的程序窗体固定大小 xff0c 而该大小是我们在编辑时的大小 经过我的摸索 xff0c 和查阅资料 找到了一个方法 其实也很简单 其实也就是先找到该窗体的物理大小 然后设置固定窗体的大小即可
  • c++ (QT)笔记

    1 标准情况下 xff0c c 43 43 中的类声明都在头文件中 xff0c 实现在 cpp文件中 xff0c 所以只在 cpp中实现类的函数在头文件中没有声明会报错 c 43 43 的函数实现和声明都可放在头文件中这样 cpp文件也可访
  • C语言中指针动态内存的申请和释放

    什么是动态内存的申请和释放 xff1f 当程序运行到需要一个动态变量时 xff0c 需要向系统的堆中申请一块内存 xff0c 用来存储这块变量 xff0c 这就是内存的申请 当程序不需要这个变量时 xff0c 就需要把申请的这块内存释放掉
  • Qt中线程使用汇总

    QThread类提供一种独立于平台的线程管理方式 方法1 一个QThread实例管理程序中的一个线程 QThread的执行开始于run 默认情况下 xff0c run 通过调用exec 启动事件循环 xff0c 并在线程内运行Qt事件循环
  • 对线程与进程的区别以及对多线程并发的理解

    一 线程与进程的区别 先简单说说线程与进程的概念 xff1a xff08 1 xff09 进程是指一个内存中运行的应用程序 xff0c 比如在Windows系统中 xff0c 一个运行的exe就是一个进程 xff08 2 xff09 线程是
  • 单片机学习经验总结

    单片机的学习是嵌入式中的裸机开发 xff0c 也就是不基于操作系统的开发过程 xff0c 你只要把自己学的程序下载到单片机内执行即可 xff08 这个过程有个专业术语 xff1a 烧写 xff09 在这个过程中 xff0c 你所写的程序 x
  • 三极管的工作原理(详细、通俗易懂、图文并茂)

    一 很多初学者都会认为三极管是两个 PN 结的简单凑合 xff08 如图1 xff09 这种想法是错误的 xff0c 两个二极管的组合不能形成一个三极管 我们以 NPN 型三极管为例 xff08 见图 2 xff09 xff0c 两个 PN
  • 三极管工作原理图解,快速了解三极管结构和工作原理

    了解三极管工作原理前 xff0c 先看一张三极管内部结构原理图 xff1b 从图中可以清晰的看出NPN和PNP内部结构的区别 三极管NPN型和PNP型的工作原理 xff1a NPN三极管 xff1a Vb lt Ve xff08 截止状态
  • C# 获取进程或线程的信息

    using System using System Collections Generic using System Linq using System Text using System Diagnostics namespace Con
  • C#图片保存与读取,以及图片另存操作

    照片的保存与读取 lt summary gt 图片转二进制 lt summary gt lt param name 61 34 imgPhoto 34 gt 图片对象 lt param gt lt returns gt 二进制 lt ret
  • C#异常解决:在调用OLE之前,必须将当前线程设置为单线程单单元(STA)模式。

    问题来源 xff1a 昨晚上在调试数据库大作业的时候 xff0c 我在注册界面Register里点击 34 上传头像 34 这个linklabel时 xff0c 程序出现了一个异常 xff1a 在调用OLE之前 xff0c 必须将当前线程设
  • Qt调用OpenCV汇总(1)

    1 在Qt Creator上新建一个项目 右键新项目 gt gt 添加库 gt gt 外部库 gt gt 选中库文件路径 gt gt 下一步 xff0c 完成 xff0c 添加到 pro文件中 然后再在pro文件中手动输入下面代码 xff1