初试 Qt OPC UA with open62541

一、技术背景

1、关于 open62541

open62541 是一个开源C的 OPC UA 实现,基于 MPL 授权(商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者)。

2、Qt OPC UA

Qt OPC  UA  Module 通过 Qt API 和 第三方的 OPC UA 栈交互。

Continue reading

Qt5 + VS2015 的命令行编译和安装

前面很多时候,LT 是在 Qt Creator 中创建项目和编译项目。但是, Qt 也提供了命令行方式,尤其是网上一些Qt项目介绍都是用命令行编译的方式介绍,所以,本文探索了一下命令行的用法。

一、设置

默认情况下,在Qt安装后,会有一个命令行快捷方式,比如我的版本叫做 “Qt 5.12.3 (MSVC 2015 64-bit)”,指向 “ C:\Qt\Qt5.12.3\5.12.3\msvc2015_64\bin\qtenv2.bat” 这个文件。

打开后,内容是这样的:

@echo off
echo Setting up environment for Qt usage...
set PATH=C:\Qt\Qt5.12.3\5.12.3\msvc2015_64\bin;%PATH%
cd /D C:\Qt\Qt5.12.3\5.12.3\msvc2015_64
echo Remember to call vcvarsall.bat to complete environment setup!

Continue reading

Qt Creator 向导生成控件插件

如何使用 Qt Creator 的向导建立和编写一个控件插件,下面是步骤。

一、生成控件插件

向导生成的项目,New Project -> Other Project -> Qt Custom Designer Widget -> Custom Widget List 中输入 Widget Class 名字,如果只有一个 Widget,例如 xxx,则源码包含两部分,一是 xxx 类,一是 xxxplugin 类。

  • xxx 类:空的,仅具有基本结构。集成自 QWidget ,具有 Q_OBJECT 宏,有构造函数。是需要后续代码工作的。
  • xxxplugin 类:结构是完整的,仅需要填入相关的信息。

二、编写 xxx 类实现代码

到此步,可以在 xxx 类中写最基本的代码,然后编译,生成的 dll  就可以在 Designer 发现控件和拖放控件了。但是,此时控件还没有属性可供设置和读取。

三、给自定义控件添加属性

还需要在自定义控件类声明中添加  QDESIGNER_WIDGET_EXPORT 宏用以暴露接口,需要头文件 <QtDesigner/QtDesigner>

#include <QtDesigner/QtDesigner>

class QDESIGNER_WIDGET_EXPORT LED : public QWidget
{
};

另,

  • Q_PROPERTY 可以将属性暴露出来
  • Q_ENUMS(InputMode) 和 enum InputMode{ mode1, mode2}; 配合起来供选择

四、构建

构建 Designer plugin 只需要构建 release 版本。

前三步可以在Designer 中使用,如果要在 Creator 中使用,则需要参见下一步。

编译器需要和  Creator 被编译时的编译器保持一致,这点非常重要。

五、Creator 中使用

文件部署需要放置 *.h *.lib *dll。参见前文 《Qt5 自定义 Widget 控件 LED(插件)》。

延申阅读:

  • VS2017+QT一个dll中包含多个插件
    https://blog.csdn.net/baidu_33662202/article/details/89132769

Qt5 自定义 Widget 控件 LED(插件)

本文将系统介绍如何编写一个LED控件,并集成到 Designer 和 Creator 中。由最初翻译一篇博文开始。

以 qt-opensource-windows-x86-5.12.2 为例,Qt 安装目录在 c:\Qt\Qt5.12.2\5.12.2\msvc2015_64\ ,即采用 MSVC 2015 64位的编译器和链接库。

一、翻译:集成一个自定义部件到Qt Designer 中

这篇文章对于入门作用很大,介绍了如何实现一个 LED 类,以及如何实现 Designer Plungin 类。但是,没有介绍如何如何使用编译出来的共享库。原文一下跳跃到了在 Designer 中拖放和设置控件。

二、集成自定义控件并使用的步骤

本文做一些补充,先对 pro 文件做一些修改和解释:

Continue reading