[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目(一)

简介: [项目配置] 配置Qt函数库和ui界面库的封装并调用的项目

📢前言

   配置的解决方案主要由三个项目组成:

  • “VisionLibrary”为基于halcon函数库,主要封装的是一些检测函数;
  • “VisionUILibrary”为QT界面库,通过该库来调用VisionLibrary函数库,从而在QT界面实现一些检测算法的实现;
  • ”VisionTestFrame”为上位机测试项目,通过其调用前两者,来最终实现视觉项目功能的测试;

💦开发环境

  • Qt5.12.0
  • Halcon 13(64-bit)
  • Visual Studio 2015

🚐函数库“VisionLibrary”的新建与配置

  1. 函数库的创建:VisionLibrary(项目名)——MI_VisionLibrary(类名)——MS_VisionLibrary.h(xxx_global.h文件——预处理器块头文件名)

  2. Debug平台下函数库的配置:右键-》属性
    常规—目标文件名$(ProjectName)D
    常规—目标文件扩展名.dll
    常规—配置类型动态库(.dll)

  3. 调试—环境PATH=$ (QTDIR)\bin%3b$(PATH)(取消空格)

    目的:自动配置电脑环境中QT和PATH下的所有路径。其中%3b是分号“;”的16进制编码。
  4. C++ — 常规 — 附加包含目录
    .\GeneratedFiles$(ConfigurationName)
    .\GeneratedFiles
    .
    $(ProjectDir)include
    $(QTDIR)\include
    $(QTDIR)\include\QtCore
    $(QTDIR)\include\QtGui
    $(QTDIR)\include\QtANGLE
    $(QTDIR)\include\QtSql
    $(QTDIR)\include\QtWidgets
    $(HALCONROOT)\include\halconcpp
    $(HALCONROOT)\include


    注:VS中的一些路径宏的含义:

    1- (QTDIR)QT (QTDIR):配置环境变量中的QT路径,我的电脑环境变量配置如图 (QTDIR)\include代表:C:\Qt\Qt5.12.0\5.12.0\msvc2015_64\include
    $(QTDIR)\lib代表:C:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib

    2- (HALCONROOT)Halcon(HALCONROOT):直接找到环境变量中的Halcon路径 (HALCONROOT)\include\halconcpp代表:D:\SoftWare\Halcon13\include\halconcpp

    3- (ProjectDir)4(ProjectDir):代表项目路径 4- (SolutionDir):代表解决方案路径
    注:项目路径在解决方案的下一级
  5. C++ — 预处理器 — 预处理器定义:预处理器在将 C 和 C++文件传递给编译器之前,对这些文件执行初步操作。可以使用预处理器①有条件地编译代码(宏定义,关键还是代码里有#ifdef XXX, #ifndef XXX之类的语句,这样编译的时候才起作用)、插入文件、②指定编译时错误消息,以及将特定于计算机的规则应用于代码部分。
    QT_QML_DEBUG
    UNICODE
    _UNICODE
    WIN32
    _ENABLE_EXTENDED_ALIGNED_STORAGE
    WIN64
    QT_CORE_LIB
    QT_GUI_LIB
    QT_SQL_LIB
    QT_WIDGETS_LIB
    VISIONLIBRARY_LIB


    预处理器定义的相关了解:
    1、VS2010中属性页中,C/C++ -->预处理器定义(针对上面①情况)
    2、vs各种报错,需要添加预处理器定义的情况汇总(针对上面②情况)
  6. 链接器—常规—输出文件$(OutDir)$(ProjectName)D.dll
    链接器—常规—附加库目录
    $(QTDIR)\lib
    $(HALCONROOT)\lib\x64-win64

  7. 链接器—输入—附加依赖项
    qtmaind.lib
    Qt5Cored.lib
    Qt5Guid.lib
    Qt5Sqld.lib
    Qt5Widgetsd.lib
    halconcpp.lib

  8. 生成事件—后期生成事件:我们用VS开发的时候,如果是项目中引用的DLL,会自动复制到生成目录,但是对于一些非引用的文件,我们又希望编译之后一起复制到指定目录,怎么办呢?那就是需要用到后期生成事件,将编译后的文件和dll拷贝到一个集中的地方,这个对于多项目开发来讲很有帮助。

    1.如果复制路径的目标文件夹不存在(rd /S /Q),需新建文件夹(md)。

    注意:如果创建的路径中带有空格或特殊字符,要将这个路径用引号包裹起来

    我的文件夹路径存在空格,所以需要路径加上“”
    2.将编译后的文件和dll拷贝到一个集中的地方

命令行输入如下:

rd /S /Q "$(SolutionDir)Export\vision\include"
md "$(SolutionDir)Export\vision\include"
rd /S /Q "$(SolutionDir)Export\vision\lib"
md "$(SolutionDir)Export\vision\lib"
rd /S /Q "$(SolutionDir)Export\vision\bin"
md "$(SolutionDir)Export\vision\bin"
xcopy /Y /S "$(ProjectDir)include\*"   "$(SolutionDir)Export\vision\include\"
xcopy /Y /S "$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)D.lib"  "$(SolutionDir)Export\vision\lib\"
xcopy /Y /S "$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)D.dll"  "$(SolutionDir)Export\vision\bin\"

🚚界面库“VisionUILibrary”的添加与配置

  1. 界面库的添加:重复函数库的步骤
    右键解决方案——添加新项目——VisionUILibrary(项目名)——MI_VisionUILibrary(类名)——MS_VisionUILibrary.h(即visionuilibrary_global.h文件——预处理器块头文件名)
  2. 添加ui界面:右键项目——添加——Add Qt Class(基类QWidget)
  3. 项目常规配置同上函数库“VisionLibrary”。
  4. 项目调试—环境配置同上函数库“VisionLibrary”。
  5. 项目C++ — 常规 — 附加包含目录相比配置函数库“VisionLibrary”而言,增加了对函数库的包含路径(后两项)。
    .\GeneratedFiles$(ConfigurationName)
    .\GeneratedFiles
    .
    $(ProjectDir)include
    $(QTDIR)\include
    $(QTDIR)\include\QtCore
    $(QTDIR)\include\QtGui
    $(QTDIR)\include\QtANGLE
    $(QTDIR)\include\QtSql
    $(QTDIR)\include\QtWidgets
    $(HALCONROOT)\include
    $(HALCONROOT)\include\halconcpp
    $(SolutionDir)VisionLibrary
    $(SolutionDir)Export\vision\include

[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目(二)+https://developer.aliyun.com/article/1394491

目录
相关文章
|
3月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
317 27
|
5月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
|
8月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
248 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
8月前
|
存储 JSON JavaScript
WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
本文介绍了如何使用MxPluginContext动态控制MxCAD项目的UI界面。通过该上下文对象,开发者可以灵活设置UI配置,如控制操作栏显隐、编辑按钮、添加侧边栏等。具体方法包括调用`getUiConfig()`获取并修改`mxUiConfig.json`中的属性,实现界面的定制化。此外,还提供了控制命令行聚焦的功能,解决输入框焦点锁定问题。详细代码示例和效果对比图展示了具体实现步骤,帮助开发者更好地适配项目需求。
|
10月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
8952 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
8月前
|
前端开发 数据安全/隐私保护 开发者
FirstUI:Deepseek能帮我们做很多事情,而这款开源框架专为开发者设计的开源UI框架,让你的项目加速起飞
嗨,大家好,我是小华同学。今天为大家介绍一个轻量级、响应式的前端UI框架——FirstUI。它提供丰富的组件库,包括按钮、输入框、下拉菜单等,帮助开发者快速构建美观、功能丰富的用户界面。FirstUI的核心理念是“简单、快速、高效”,适合各种Web应用开发,如企业网站、电商平台和个人博客。其体积小、加载快,支持响应式设计,并且易于定制。FirstUI拥有活跃的社区支持,开发者可以轻松找到帮助并分享经验。欢迎关注我们,获取更多优质开源项目和高效工作学习方法。
289 0
|
11月前
|
UED
「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
本篇将带领你实现一个互动性十足的灯光控制小项目,用户可以通过点击按钮来控制灯光的开关。该项目将涉及状态管理、动态图片加载以及按钮交互,是学习鸿蒙应用开发的重要基础。
212 5
「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
|
5月前
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
167 15
|
5月前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
155 11
|
18天前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
149 0
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例

热门文章

最新文章

推荐镜像

更多
  • qt