基于Qt的跨平台应用开发(转)

让Qt应用程序跑在Android上 让Qt应用程序跑在Android上         Qt最大的优势就是跨平台,一次性开发的Qt应用程序,可以跑Windows、跑linux、跑MAC……如今移动平台android操作系统如此火爆,Qt当然不能放过对android的支持,对了,还有iphone/ipad。而且,c++开发者们,想做android开发也不是问题了! 但是目前国内研究qt for android 的人真是太少了,今天我使 阅读详情
转自:http://www.cnblogs.com/R0b1n/p/4106613.html
1 Qt简介 

Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。

2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。(百度百科)

Qt作为高质量的跨平台框架,具有支持平台广泛、功能完整、开源、执行效率高、界面开发简单、开发工具完备等特性。下表是Qt与目前较为流行的跨平台解决方案Java和Xamarin比较结果。

 QtJavaXamarin
支持的桌面平台

Windows、Mac、Linux、 Unix、Solaris

Windows、Mac、Linux、Unix、Solaris

Windows、Mac、Linux

支持的移动平台

Android、iOS、Window Phone

Android

Android、iOS、Window Phone

开发语言

C++JavaC#

是否开源

有开源版本(基于LGPL)也有商业版本

OpenJDK开源

只有商业版本,基于Mono框架为开源

开发工具

Qt Creator, Qt Designer

Eclipse、NetBeans

Monodevelop、Virtual Studio

功能完成性

功能十分完整

功能十分完整

功能不十分完整

界面开发难度

简单

较复杂

较简单

成熟度

十分成熟

十分成熟不十分成熟

目前最高版本

5.28.04.1

执行效率

相当好较差一般

依托公司

Digia.com

(之前为Nokia)

Oracle.com

(之前是SUN)

Xamarin.com

几种跨平台框架的比较

 

Qt不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库、网络、脚本库、XML库、WebKit库等组件,其核心库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力.Qt的开发工具Qt Creator(IDE)、GUI Designer(界面设计)、Build Tools(编译)、Help System(帮助系统)I18n Tools(多语言工具)等,也极大简化了开发应用的难度。下图为Qt的技术堆栈

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

 2  Qt 编程关键技术

2.1 信号与槽

信号和槽机制是QT的核心机制,是一种高级接口,应用于对象之间的通信。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的Qt工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。

所有从QObject或其子类(例如QWidget)派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。对象甚至并不了解具体的通信机制。

信号与槽连接是任意个的,甚至信号与信号也可以连接的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。

2.2 Qt事件处理

Qt可以说是是以事件驱动的UI工具集,信号与槽在多线程的实现也依赖于Qt的事件处理机制。在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent。Qt中事件的产生、分发、接受和处理:

(1)事件的产生如按键,点击鼠标等等动作所产生的keyPressEvent,  keyReleaseEvent,mousePressEvent,mouseReleaseEvent等事件(分别被封装成QMouseEvent和QKeyEvent中),这些事件来自于底层的操作系统,它们以异步的形式通知Qt事件处理系统。

(2)事件的接受和处理使用QObject。事件处理机制是QObject三大职责(内存管理、内省与事件处理制)之一。任何一个想要接受并处理事件的对象均须继承自QObject,可以选择重载QObject::event()函数或事件的处理权转给父类。

(3)事件的分发:对于non-GUI的Qt程序,是由QCoreApplication负责将QEvent分发给QObject的子类-Receiver。对于Qt GUI程序,由QApplication来负责。

 

3 Qt开发与实例分析 

下面通过一个指标计算的程序分析Qt开发完整过程。该系统需求:

(2)从数据库中读取计算指标参数。(数据库操作组件)

(3)计算所的指标需要用温度计的形式展示,并截图以便在文档中使用。

(图像显示,截图)

(4)能够将计算数据通过Excel导入到数据库中,并能够将计算结果导出到Excel中。

(Excel操作组件)

(5)需要有Windows和Mac两个版本且功能和界面布局要基本相同。(跨平台)

3.1 开发环境

下表为使用的开发环境,基本为开源软件

系统平台Mac OSX 10.9
使用框架,SDKQt 5.2 ;SDK:qt-mac-opensource-5.2.1
开发工具Qt Creator 3.0;Qt Designer 3.0
开发语言C++,SQL
数据库SQLite 3
测试平台Mac OSX;Window XP x86;Window 7 x86/x64
其他开源软件

FireFox SQLite Manager(管理数据库); 

Inno Setup Compiler(打包应用程序);VirtualBox(测试应用程序); 

yEd (绘制示意图) 

其他库文件: 

QtXlsx (用于进行Excel操作)

 

3.2 系统实现基本框架

该系统综合使用了Qt的数据库模块、GUI模块和第三方的QtXlsx模块,使用VirtualBox完成系统打包和测试,使用Inno setup对Windows程序进行封装,使用SQLite Manager管理SQLite数据库。下图为系统实现基本框架。

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

系统实现基本框架

3.3 数据库管理

Qt对数据的支持相当完善,Oracle、SQL Server、DB2、 SyBase、 MySQL、 PostgreSQL、 SQLite3 都可以完美的支持。由于需求要使用本地数据库并尽可能的小巧灵活,选择SQLite3作为数据库,通过FireFox 插件SQLite Manager进行管理,图4为SQLite Manager 管理界面。Qt使用QsqlDatabase类来管理数据,该类中包括所有数据库的管理行为,如addDatabase为添加数据库驱动,下面为连接SQLite3示例代码。

 

复制代码
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    if (!QSqlDatabase::drivers().contains("QSQLITE"))

        QMessageBox::critical(0, QObject::tr("Unable to load database"), QObject::tr("This demo needs the SQLITE driver"));

    db.setDatabaseName (dbName);

    if (!db.open()) {

        QMessageBox::critical (0,QObject::tr ("DataBase Error"),db.lastError ().text ());

        return false;

    }
复制代码

数据库连接代码

对于已经连接上的数据库可以使用两种方法来进行操作:

(1)使用QSqlQuerry,该方法可以直接执行SQL语句,使用与对数据库的批量处理。如:

“query.exec ("DROP VIEW IF EXISTS 'data_x300';");”

(2)使用QSqlTable,将数据库中的表转换为Qt中的Table,然后进行数据库增添删改等事务性操作,简单而且安全,推荐使用这种方法操作代码。下面为使用QSqlTable代码

复制代码
if((model->insertRow (row))&&

                (model->setData(model->index(row,0),id))&&

                (model->setData(model->index(row,1),name))&&

                (model->setData(model->index(row,2),newPasswd))&&

            (model->setData(model->index(row,3),hint))&&

                (model->submitAll()))

            QMessageBox::warning (this, "Correct","用户添加成功!");

        else

            QMessageBox::warning (this, "Error","密码添加失败!");
复制代码

3.4 Qt中界面设计

Qt使用Qt Designer Form,该方法直观且功能强大。首先使用Qt Designer建立并绘制以xxx.ui为后缀的文件,然后在编译时会将其转换为ui_xxx.h头文件,再进行统一的编译。图6为Qt Designer界面。在Qt5加入了对基于JS的QML进行界面的支持,QML觉Qt Designer Form有更强的控制能力和美化能力,而且使用目前流行的JS语言,相信必将成为未来发展趋势。

该系统中还要求用温度计显示计算结果,因此单单是界面绘制工具并不能满足要求。需要先找到温度计的样本图,使用绘图工具进行修改,最后使用Style Sheet脚本对控件进行美化处理。下图为StyleSheet处理脚本和效果。

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

Style Sheet处理脚本及效果

该系统需要对结果截屏,Qt中截屏又两种方式,一种方式是在整个屏幕中,根据相对位置进行截屏(pixmap.grabWindow());另外一种是在Qt中的一个窗口中(pixmap.grabWidget()),根据相对位置进行截屏。下面为截屏代码:

 

int grapX= year_lineEdit->geometry ().x ();
int grapY = year_lineEdit->geometry ().y ();
pix = pixmap.grabWidget (this, grapX-2 ,grapY -2, this->width ()-grapX, this->height ()-grapY -140);

 

3.5 对Excel进行操作

该系统将需用Excel将计算数据导入到数据库中,并将计算结果导出到Excel中。但在Qt中并没有对Office进行处理的组件,因此需要第三方组件进行支援。我们使用开源的Qt模块QtXlsx该模块可以对Excel进行操作,功能十分强大。(Qt更多开源模块可以在http://inqlude.org 上找到。)使用方法如下:

(1) 首先在网站上下载QtXlsx模块项目,安装Perl5,使用Qt Creator打开并编译;

(2) 然后再命令行中使用“qmake; make; make install”来安装库

(3) 在pro文件中加入xlsx模块,在头文件中加入"xlsxdocument.h"头文件

即可以使用QtXlsx库进行Excel操作了,下面为QtXlsx操作代码:

        

复制代码
QString fileName = path + "/index.xlsx";

        QXlsx::Document *xlsx = new QXlsx::Document(fileName);

        int rowC = (model->rowCount ());

        int columnC = (model->columnCount ());

        for (int i = 0; i < columnC; ++i) {

            xlsx->write (1,i+1,model->headerData (i,Qt::Horizontal).toString ());

        }

        for (int i = 0; i < rowC; ++i) {

            for (int j = 0; j < columnC; ++j) {

                xlsx->write ((i+2),(j+1), model->record (i).value (j).toString ());

            }

        }

        if (!fileName.isEmpty()) {

            if(xlsx->save())

                QMessageBox::warning (this,"Correct","数据导出成功");

            else

                QMessageBox::warning (this,"Error","数据导出失败");

        }
复制代码

4 系统的打包和测试 

4.1 Mac系统上打包Qt

需要使用otool和macdeployqt两个工具,otool用于定位适用的动态链接库文件,macdeployqt用于对生成的Release版本的程序进行打包。

具体步骤如下:

(1)用Qt Creator编译生成Release版本程序,并测试通过;

(2)进入build-q***-Qt_5_2_1_clang_64-Release文件夹;

(3)在命令行下使用“otool –L”命令查看适用的动态链接库文件,如图所示。如缺少文件,添加到环境变量中;

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

otool输出结果

(4)在命令行下使用macdeployqt进行打包。下图为打包后应用结构图:

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

打包应用结构

(5)生成的App文件再使用Disk Utility程序封装,就可以发布了;

4.2 Windows系统上打包Qt。

使用windeployqt工具生成需要打包的文件夹时,会漏掉一些文件,因此需要手动添加一些动态链接库。具体步骤如下:

(1)用VirtualBox 建立Windows 7虚拟机,安装Qt开发完整的平台;

(2)将QtXlsx源程序拷贝到虚拟机中,安装Perl5,编译安装该模块;

(2)将待打包应用程序源代码拷贝到虚拟机中,编译成Realse版本应用;

(3)将应用拷到一个独立文件夹中用windeployqt,生成需要的动态链接库文件;

(4)将其他需要的动态链接库文件从Qt安装目录中拷贝到该目录中;

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

动态链接文件图

(5)使用inno setup工具对该目录进行封装即可发布了。

基于Qt的跨平台应用开发(转) - ♂苹果 - 眼睛想旅行

Inno Setup

4.3 发布软件测试

测试采用白盒测试,在Virtual Box分别建立全新的Mac OSX,Windows XP和Windows 7

操作系统虚拟机,将打包程序分别拷贝到相应的系统平台中。分别安装并测试系统功能是否符合要求。如果不符合,需要重新编程、编译、打包和测试,直到满意为止。

5 Qt开发常见问题

5.1 ui文件转换为头文件问题

有时Qt Creator编译时会出现一些问题,提示缺少ui_***.h头文件。这是Qt系统出现了问题,解决方法是手动将ui文件转换为相应的头文件。如对***.ui文件,使用:

$ uic ***.ui -o ui_***.h

将其手动的转换为相应的头文件就可以编译了。

5.2 Mac打包时出现不包含“libmysqlclient.18.dylib”问题

在Mac系统中打包可能出现缺少“libmysqlclient.18.dylib”文件问题,这是因为系统没有安装MySQL。解决方法是先安装,macport,然后使用macport安装MySQL。由于默认libmysqlclient.18.dylib文件位置不在搜索目录中,还需要将其拷贝到相应的目录中。

5.3 添加应用图标

对于Windows应用,需要建立一个rc文件说明ico图标文件,在pro文件中添加rc文件。表 为一个示例:

复制代码
Myapp.rc:

IDI_ICON1               ICON    DISCARDABLE     "myappico.ico"

Myapp.pro:

RC_FILE = myapp.rc

复制代码

 

 

 

 

对于Mac应用,需要生成图片转成为icns文件,然后在pro文件中添加icns文件:

ICON = myapp.icns

参考文献

[1] Qt . [EB/OL].http://qt-project.org/

[2] Qt wiki. [EB/OL].http://zh.wikipedia.org/zh-cn/qt

[3] SQLite. [EB/OL].http://sqlite.org/

[4] SQLite Manager . [EB/OL].https://addons.mozilla.org/zh-CN/firefox/addon/sqlite-manager/

[5] GIMP. [EB/OL].http://www.gimp.org/

[6] Inno setup tools. [EB/OL]. http://www.jrsoftware.org/isinfo.php

[7] Virtual Box. [EB/OL]. https://www.virtualbox.org/

[8] OpenOffice. [EB/OL]. http://www.openoffice.org/zh-cn/

[9] yEd. [EB/OL]. http://www.yworks.com/en/products_yed_about.html

[10] QtXlsx. [EB/OL]. http://qtxlsx.debao.me/

[11] Java. [EB/OL]. http://www.java.com/zh_CN/

[12] Xamarin. [EB/OL]. http://xamarin.com/

[13] Mono. [EB/OL]. http://www.mono-project.com/Main_Page

[14] Java. [EB/OL]. http://openjdk.java.net/

[15]Qt 帮助. [EB/OL]. http://qt-project.org/doc/

Qt框架在跨平台应用开发中的优势 综上所述,Qt框架在跨平台应用开发中具有诸多优势,包括卓越的跨平台兼容性、丰富的控件和功能、易于学习和使用、强大的社区支持、广泛的应用领域、持续更新和发展以及安全性与稳定性等。Qt框架提供了大量的GUI控件,如按钮、文本框、列表框等,这些控件都是高度可定制的,能够满足各种复杂的用户界面需求。同时,Qt还支持多种绘图和渲染技术,包括2D图形、3D图形、动画和音频视频处理等,为开发者提供了丰富的视觉和交互效果选择。此外,开源社区为Qt提供了大量的插件和扩展,使得Qt能够满足更加多样化的应用场景和需求。 阅读详情

相关推荐

Qt框架在跨平台应用开发中的表现如何?

Qt框架,作为一个知名的跨平台C++图形用户界面应用程序开发框架,以其出色的跨平台特性和丰富的功能库,在众多开发工具中脱颖而出。本文将从Qt框架的特点、优势、应用场景以及实际开发中可能遇到的问题等方面,详细探讨Qt在跨平台应用开发中的表现。同时,随着Qt社区的不断壮大和技术支持体系的完善,开发者在使用Qt框架时将面临更少的问题和挑战。然而,在实际开发中,开发者仍然需要关注学习曲线、兼容性、性能优化和社区支持等方面的问题,以确保项目的顺利进行和成功完成。这使得基于Qt开发的应用能够提供更好的性能和用户体验。

DominicBarrett的博客 1004

移植Qt到安卓

(此步骤可选)其实现在就能运行程序了,运行前可以尝试修改android的配置文件,在 其它文件————android————AndroidManifest.xml,打开这个文件,会出现一个配置窗口,而不是xml编辑窗口,这个配置窗口可以修改包的名字,程序名字,图标和权限,这里建议不要修改“run”的文字,不然可能会出现找不到可执行文件的情况;那当然是可以的,笔者表示不推荐,官方也不推荐,原因很多,主要是widget不适合触摸屏,而且默认不使用opengl加速,导致程序效率不高。记得选择安卓的套件;

weixin_67271870的博客 2874

Qt框架如何实现跨平台的GUI应用开发?

Qt框架以其跨平台性、易用性和丰富的功能成为了GUI应用开发的首选工具之一。通过使用Qt Creator和Qt Designer,开发者可以高效地设计和实现复杂的用户界面。信号与槽机制为处理用户交互提供了灵活而强大的支持。最后,通过Qt提供的打包工具,开发者可以轻松地将应用程序发布到不同的平台上。展望未来,随着技术的不断发展,Qt框架将继续优化和改进,为开发者提供更加高效和强大的工具来创建跨平台的GUI应用。

NewmanEdwarda2的博客 1252

利用Qt开发跨平台APP(一)(Android)

本文将手把手教你如何在Windows环境下,使用Qt编译出安卓应用程序。Qt是一个优秀的跨平台开发工具。我们利用Qt可以很方便地将一次编写的应用,多次编译到不同平台上,如Windows、Linux、MAC、Android、iOS、Windows Phone等。开发者只需掌握Qt的C++编程与界面制作方法,即可制作出包括手机APP在内的跨平台应用。

Wiki's Blog 9万+

【AI辅助生成】QT跨平台架构深入分析 为什么QT框架能够开发跨平台应用?

这篇博客使用AI技术辅助生成。 QT跨平台架构通过抽象层设计实现多平台兼容,其图形、事件、线程、文件系统等系统均采用平台无关接口,使用插件和国际化支持,使开发者能高效构建高性能、易维护的跨平台应用。

QT WIDGETS,QT QML,QT WEB、OpenCV 1054

QT 跨平台开发(一)windows下qtcreator生成可供android调用的so库

首先,Qt For Android 环境搭建可以参考下面这篇文章: Qt For Android 开发环境配置 完成之后我们再次尝试导出一个QT的so库。 上面的步骤完成之后,可以看到QTCreator自动帮我们创建了这几个文件: 我们对 Test 稍微改造一下,导出函数,而不是导出类,作为动态库时,导出类可能并不是很适用。 //test.h #ifndef TEST_H #defin...

q2nAmor 2273

Qt代码-FFmpeg实现OGG转MP3

QString file = QFileDialog::getOpenFileName(this, "选择OGG文件", "", "OGG文件 (*.ogg)");QString file = QFileDialog::getSaveFileName(this, "保存MP3文件", "", "MP3文件 (*.mp3)");该实现通过调用FFmpeg命令行工具来完成格式转换,需要系统中预先安装FFmpeg。<< "-b:a" << "128k" // 音频比特率。

寒寒豆豆软件公司的博客 960

Qt开发:值得学习的跨平台开发框架

Qt是一种跨平台的应用程序开发框架,它提供了丰富的工具和库,可以帮助开发者构建高质量、可移植的应用程序。Qt支持多种操作系统,包括Windows、macOS、Linux和嵌入式系统等。对于想要开发跨平台应用程序的开发者来说,Qt是一个值得学习的选择。Qt提供了几种开发方式,包括使用C++编写原生应用、使用QML进行声明式开发以及混合开发方式。下面将详细介绍这几种开发方式,并提供相应的源代码示例。 使用QML进行声明式开发: QML是一种基于JavaScript的声明式语言,用于描述用户界面。它与C++代码

FucMobile的博客 259

Qt嵌入式图形开发全书三篇PDF资源介绍:从入门到精通,掌握Qt开发核心技能

Qt嵌入式图形开发全书三篇PDF资源介绍:从入门到精通,掌握Qt开发核心技能 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 Qt嵌入式图形开发(全书三篇)PDF资源,是一套全面涵盖Qt嵌入式图形开发知识的电子书籍,分为基础篇、入门篇和实战篇三个部分。这套书籍以其深入浅出的讲解方式,助力开发者从基础知识掌握到实战应用,从而全面精通Qt嵌入式图形开发。 项目技术分析 《Q...

gitblog_06722的博客 756

基于v4l2和Qt框架的多媒体通信与百度语音识别整合教程

v4l2接口是Linux内核中多媒体设备的标准化编程接口,用于视频设备的输入输出操作。它提供了一套丰富的控制命令,允许应用程序对多媒体设备进行复杂的配置,如视频捕捉、视频输出、无线电调谐器以及摄像头控制等。为了与这些设备进行通信,开发者需要理解v4l2的设备节点、缓冲区管理、格式选择和设备控制等核心概念。Qt是一个跨平台的C++图形用户界面应用程序开发框架。它提供了一个全面的套件,包含各种工具和库,用于开发复杂的应用程序。Qt框架由Nokia开发,并以开源形式提供。

weixin_35756690的博客 1057

QT5开发实战教程:跨平台应用开发与实例解析

QT5,作为Qt Framework最新的稳定版,是一个全面的C++库,用于开发跨平台的图形用户界面应用程序。它不仅提供了丰富的组件和控件,还支持各种功能强大的后端技术,如网络通信、数据库连接、多媒体处理等。QT5提供了一种高度集成的开发环境,简化了应用的构建过程,同时保持了高效和强大的性能。Qt提供了声明和定义自定义信号和槽的机制。自定义信号可以在继承自QObject的类中使用signals关键字声明。

weixin_34438187的博客 961

Qt 跨平台应用开发经验分享

Qt 跨平台开发的核心是“平衡统一性与平台特殊性”:通过 Qt 原生 API 最大化代码复用,通过条件编译和抽象层处理平台差异,同时遵循各平台的 UI/UX 规范和性能特性。实际开发中,需在多平台持续测试,积累平台特定经验,才能构建真正“一次编写,处处运行”的高质量应用。

编程与实战的博客 2335

Qt跨平台应用开发电子书大全

随着软件开发的多样化和复杂化,跨平台应用开发已经成为了行业的一种趋势。Qt作为一款功能强大的跨平台应用程序和图形用户界面框架,广受开发者的喜爱。Qt不仅仅为开发者提供了丰富的控件库和模块,而且利用其独特的信号与槽机制,极大地方便了程序之间的通信,使得开发者能够高效地编写代码。本章将带领读者初步了解Qt跨平台应用开发,并在后续章节中深入探讨Qt 4中文手册的基础知识,以及在Linux环境下的应用实例。

weixin_26907223的博客 838

01-为什么要用Qt开发(Qt跨平台应用开发)

一、为什么选择qt 跨平台,一次写代码多个平台编译。使跨平台应用达到各个平台原生应用的体验与流畅度。相比与java或c#在开发图形计算方面的软件时有非常好的使用体验与流畅度。 使用C++编程虽然没有java写起来快速省心,但是也没有差多少。但是软件执行效率非常高。 非常适用于图像处理 方面的软件(图像处理与计算方面对速度要求很高)。同时C++有大量的图像视频等处理库和C++版本的图像处理算法...

Robert Zhang 1万+

AFSim插件开发实战:从环境搭建到功能扩展

本文详细介绍了AFSim插件开发的完整流程,从环境搭建到功能扩展,涵盖了SDK配置、插件创建、核心代码解析、功能扩展实战、调试优化以及高级开发技巧。通过实战案例和实用技巧,帮助开发者快速掌握AFSim插件开发,提升仿真系统的扩展性和灵活性。

weixin_29309475的博客 578

海上AI导航系统:技术架构与行业应用解析

计算机视觉与强化学习技术在海上导航系统中的应用正逐步改变传统航运业。通过多模态传感器融合技术,现代AI导航系统能够实现高精度的物体识别与实时路径规划,有效解决能见度依赖、决策延迟等核心痛点。以Orca AI的SeaPod系统为例,其结合了NVIDIA GeForce RTX 4070的边缘计算能力与多光谱协同识别技术,在恶劣环境下仍能保持稳定性能。这类系统不仅提升了航行安全性,还通过优化航线显著降低燃油消耗,在东京湾、马六甲海峡等繁忙水域展现出巨大价值。随着毫米波雷达融合方案的测试推进,未来海上导航将突破极

weixin_33597080的博客 355

QT跨平台应用程序开发框架(9)—— 容器类控件

QGridLayout 用来实现网格布局的效果,可以达到 M * N 的这种网格效果,主要属性和 QHBoxLayout 类似,但是设置 spacing 的时候是按照垂直水平两个方向来设置的。每个 Widget 只能设置一个布局管理器, 但是可以通过拖拽方式创建两个布局遍历器,但是这样创建的布局管理器仅仅只会将内部控件重新组合位置,并不会像上面一样随着窗口大小改变。而容器内控件包含的直接就是我们前面介绍的一堆的控件。解答:我们前面使用ui创建界面时,都是手动拖拽方式来布局的,其实这种方式不科学。

aaqq800520的博客 1166

Codesys.运动控制修改凸轮点

通过改凸轮曲线的主从轴缩放比例或者偏置。 新建多个凸轮曲线,对CAM曲线进行切换。 程序中动态修改,仅修改中间的关键点(凸轮末点修改or凸轮曲线运行中修改)。 程序中动态修改,修改首未关键点及关键点个数,需要重新触发MC_TableSelect。 使用程序新建凸轮表代码,实现电子凸轮基本运动。 我们讲的凸轮表切换、关键点修改、程序新建电子凸轮,这些方法没有本质区别,总之都是“趁曲线不注意,把凸轮表改了。

傻响雨 6829

【QT】基于C++ 开发的跨平台应用开发框架

开发者调查,Qt 在 “最常用的跨平台框架” 中排名第三(13% 的开发者使用),仅次于 React Native(40%)和 Flutter(31%)。但需注意,React Native 和 Flutter 主要面向移动应用,而 Qt 覆盖桌面、嵌入式、移动等多领域。” 或 “跨平台应用开发框架”,但它并无官方中文全称,其名称来源于 “Quality” 与 “Tools” 的结合,寓意高质量的开发工具。Qt 的全称是 “Qt Toolkit”。去吧 去C++ 看看,C++领域还有很广泛的天地。

weixin_45958839的博客 1890

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

Robot_PLC_HMI_Automation 3575

使用Qt编译Qt WebEngine

这就是使用Qt编译Qt WebEngine模块的基本步骤。通过按照上述步骤,您应该能够成功编译和使用Qt WebEngine来嵌入Web内容到您的Qt应用程序中。Qt WebEngine是Qt框架的一个模块,它提供了一个现代的Web浏览器引擎,可以在Qt应用程序中嵌入Web内容。首先,需要获取Qt的源代码。如果尚未安装,可以从Qt官方网站下载并安装Qt。完成Qt的安装后,您可以构建并运行Qt WebEngine示例来验证编译是否成功。这将把编译好的Qt库文件和头文件安装到之前指定的安装目录中。

DevForge的博客 3017

QT跨平台应用程序开发框架(1)—— 环境搭建

其实说是安装三个东西,其实只要安装一个Qt SDK,其它两个都有了。之后一路点击下一步即可,就是安装路径不要带中文,不要带特殊符号和空格。创建好项目后会预先生成一些代码,我们来讲解一下这些代码做了什么。Windows下还有哪些方案可以开发GUI?之后一路确认然后安装即可。

aaqq800520的博客 3898

我在腾讯上构建了一个人人能用的机载适航知识库

当ChatGPT掀起生成式AI的浪潮时,工程师们发现了一个尴尬的现实:询问“如何编写软件合格审定计划”,AI的回答可能充满似是而非的术语,却无法精确关联FDO-178C的对应内容。现在市面上有许多的AI大模型+适航知识库的方案,之前我的文章介绍了一种本地大模型加知识库的解决方法。此外,ima知识库的容量大小可以到30GB(企鹅大气),只要管理好文件的格式,理论上是完全可以把机载适航相关的内容容纳进去的。后续会不断增加适航法规,适航规章,适航标准,适航书籍,适航相关的论文,以及网上其他一些优秀的内容。

qq_41854911的博客 1225
上一篇: Mac下发布Qt应用程序(转)
下一篇: Python GUI编程各种实现的对比(转)
woodcol
博客等级 码龄19年 288粉丝 429原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值