前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >QT软件开发源码工程前端QMake管理

QT软件开发源码工程前端QMake管理

作者头像
周旋
发布2024-04-26 17:29:50
780
发布2024-04-26 17:29:50
举报
文章被收录于专栏:行走的机械人行走的机械人

欢迎学习烛照QT机器视觉软件开发教程,本文为课程附属文档,完整视频教程见文末网站链接。

上一篇中我们项目准备好了,接下来开始写代码。写代码之前肯定是先规划我们项目结构和源码如何管理。

烛照:机器视觉光度立体缺陷检测项目,会包含

  1. QT软件上位机进行算法效果的调参和演示
  2. 使用C++和opencv手撕实现光度立体算法功能

我们可以将算法部分直接写入到我们QT上位机内,也就是不论软件还是算法都写到一起揉成一团,但在实际项目开发中并不是这样的。

我们将前端软件界面和后端算法进行分离解耦,也就是如下结构:

1、烛照工程管理结构

前端软件界面我们使用QT/C++编写,工程管理就直接使用QT自带的qmake,也就是pro文件管理。后端光度立体算法做成一个C++算法动态库,然后由我们前端调用这个动态库。算法动态库我们采用CMake管理。

这样由若干好处,例如:

  1. 前后端分离,代码易于管理,学习起来也不杂乱
  2. 前后端松耦合,不会产生强依赖,两者只靠接口进行链接,所以如果我想复用我的算法动态库,可以直接复用到其它软件上。

至于工程管理,前端我们使用QT自带的qmake,其实我们还可以直接使用VS工程管理,或者使用CMake管理,但使用qmake对于所有级别的学者都可以快速上手,如果使用cmake肯定会涉及一些高阶内容,但我们本教程不打算对cmake进行深入讲解,所以不使用cmake。我们也不适用VS工程直接管理,因为VS的sln文件是个二进制文件,我们无法对其进行版本管理,而qmake是文本文件,是可以方便的进行版本管理的。

对于后端算法的工程管理,我们却采用了cmake,因为后端只有一个算法动态库,cmake很简单,我们也正好简单的入门一下cmake,同时我们同样不采用VS的sln工程文件来管理后端,原因同样是不好进行版本管理。

2、创建前端工程

虽然是手把手教程,但创建QT工程应该都会吧,如果第一次使用QT,可以先参照本教程附录内容将QT安装好。

选择创建一个新的桌面应用工程:

填写项目名称ZhuZhao和项目路径:

选择qmake作为构建系统:

修改主界面类的名称,注意我们的类都采用了驼峰命名,即MainWindow,而非mainwindow全小写命名。

选择你的构建套件,我们都使用MSVC套件:

版本控制选择none,点击完成:

至此,我们的前端QT工程就建好了,我们release运行如上图所示,我们只需要在工程中修改代码,来实现我们的上位机软件界面和逻辑即可。

3、前端QMake内容解析

QMake是QT自带的工程管理语法,其文件为pro工程文件,我们看烛照的pro工程文件如下:

代码语言:javascript
复制
#添加依赖的QT,主要包含core gui widgets
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#声明C++语言规范版本
CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS

#添加源文件和头文件
SOURCES += \
    ZZConfigWidget/ZZConfigWidget.cpp \
    ZZConfigWidget/ZZOneParamWidget.cpp \
    ZZConfigWidget/ZZProcessThread.cpp \
    ZZListener.cpp \
    ZZLogWidget/ZZLogMessage.cpp \
    ZZLogWidget/ZZLogWidget.cpp \
    ZZThumWidget/HThumbnailList.cpp \
    ZZThumWidget/LitImgItemWidget.cpp \
    ZZThumWidget/VThumbnailList.cpp \
    ZZViewWidget/CustomGraphicsView.cpp \
    ZZViewWidget/CustomImageItem.cpp \
    ZZViewWidget/CustomImageView.cpp \
    main.cpp \
    MainWindow.cpp

HEADERS += \
    MainWindow.h \
    ZZConfigWidget/ImageConvert.h \
    ZZConfigWidget/ZZConfigWidget.h \
    ZZConfigWidget/ZZOneParamWidget.h \
    ZZConfigWidget/ZZProcessThread.h \
    ZZListener.h \
    ZZLogWidget/ZZLogMessage.h \
    ZZLogWidget/ZZLogWidget.h \
    ZZThumWidget/HThumbnailList.h \
    ZZThumWidget/LitImgItemWidget.h \
    ZZThumWidget/VThumbnailList.h \
    ZZViewWidget/CustomGraphicsView.h \
    ZZViewWidget/CustomImageItem.h \
    ZZViewWidget/CustomImageView.h

#添加资源文件
RESOURCES += \
    ZhuzhaoGuiRes.qrc

#配置opencv库
INCLUDEPATH += S:/OPENCV/opencv_4.5.5_install/opencv/build/include
Debug: {
LIBS += -lS:/OPENCV/opencv_4.5.5_install/opencv/build/x64/vc15/lib/opencv_world455d
}
Release: {
LIBS += -lS:/OPENCV/opencv_4.5.5_install/opencv/build/x64/vc15/lib/opencv_world455
}

#配置我们自己实现的光度立体算法库
INCLUDEPATH += $$PWD/../PhotometricStereo
Debug: {
    LIBS += -l$$PWD/../bin/PhotometricStereo
}
Release: {
    LIBS += -l$$PWD/../bin/PhotometricStereo
}

#配置生成路径,将我们的结果输出产物输出到bin文件夹内,方便管理
CONFIG(debug, debug|release){
    DESTDIR = $$PWD/../bin
}else{
    DESTDIR = $$PWD/../bin
}

#设置图标
RC_ICONS = zhuzhao_logo.ico

#添加翻译文件
TRANSLATIONS += language_ch.ts

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

其实没什么语法规则,大家直接对着源码直接看注释即可。

THE END

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-25,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 周旋机器视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、烛照工程管理结构
  • 2、创建前端工程
  • 3、前端QMake内容解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com