
QT编程
QT日常开发记录
自由软件开发者
C++资深开发者,订阅用户:如果评论留言不能及时回复,请Q我:296863766 注明为优快云
展开
-
QtCreator16创建WebAssembly工程在浏览器中显示图片
在工程目录下创建res文件夹,复制图片文件到res中。选择模板为Qt Resource File。链接qrc资源,不然图片会不显示。成功启动浏览器,并显示UI。选择图片资源添加别名。原创 2025-03-19 20:43:40 · 187 阅读 · 0 评论 -
QtCreator16使用WebAssembly生成网页应用
1.创建应用,并选择输出平台为WebAssembly。2.配置EMSDK为3.1.56。5.编译成功会自动打开浏览器。3.对应QT版本为6.8.2。原创 2025-03-19 13:07:32 · 229 阅读 · 0 评论 -
Qt注册类对象单例与单类型区别
JS注册单类型函数要求提供一个包含QQmlEngine *engine, QJSEngine *jsEngine这两个参数 并返回QJSValue类型的静态对象。2.创建类对象静态实例,已为下面注册用。上面为注册C++类对象为单类型与单例使用。4.直接使用Lambda注册JS单类型。2.注册MySysInfo为单例。3.在QML中使用JS注册单类型。上面为注册类对象为单类型使用。下面演示注册类对象为单例使用。4.在QML中使用单类型。3.在QML中使用单例。下面注册JS单例并使用。1.创建JS静态单类型。原创 2024-02-29 20:45:26 · 783 阅读 · 0 评论 -
QtCreator报Failed to parse qmlimportscanner output解决
使用QtCreator12编译一次后,再使用QtCreator13成功编译通过,问题解决。但输出的JSON对象不是json格式,而是命令。执行打印输出的命令,成功返回JSON。增加$$成功输出JSON。原创 2024-02-29 20:18:00 · 431 阅读 · 0 评论 -
QtCreator报Exception in thread “main“ java.net.ConnectException: Operation timed out解决
到用户目录下的./gradle/wrapper/gradle-5.6.4/随机文件夹名/由于无法使用https下载导致,复制要下载的URL。复制gradle-5.6.4-bin.zip。原创 2024-01-17 19:54:36 · 1304 阅读 · 0 评论 -
QtCreator12无法识别Qt5.15.2的安卓SDK与NDK配置解决
使用Android Studio下载 Android SDK Command-line Tools 10.0。点击Manage Kits并选择Devices。然后点击Android会弹出下图窗口,并自动更。复制10.0中所有东西到latest中。双击打开cmdline-tools。设置JDK为JDK11。原创 2024-01-17 19:14:24 · 1121 阅读 · 1 评论 -
C++绘制QML图像
C++绘制QML图像。原创 2024-01-10 17:26:18 · 451 阅读 · 0 评论 -
macosx编译qgroundcontrol源码(Qt6.7)
1.克隆源码: clone --recursive http://github.com/mavlink/qgroundcontrol.git。打开QGroundControl.pro并编译IOS版本。IOS工程输出要求最低IOS 13.0。新版本使用Qt 6.6或者更高。旧版本使用Qt 5.15.2。使用QtCreator编译。原创 2024-01-06 01:55:58 · 522 阅读 · 0 评论 -
MacOSX报Project ERROR: failed to parse default search paths from compiler output解决
重启QtCreator打开工程,显示OK。打开工程时只显示一个.pro文件.找到toolchain.prf。原创 2024-01-05 01:03:32 · 1064 阅读 · 3 评论 -
Qt Jom Parallel Builds 并行构造
4.复制到qmake所在目录并运行。2.生成makefile。执行qmake -r。原创 2023-11-15 10:08:11 · 354 阅读 · 0 评论 -
解决QtCreator11及更高版本使用JDK17时无法生成APK
3.修改build.gradle 所有仓库地址加上HTTPS验证:allowInsecureProtocol true。6. gradle版本改为7.2位于gradle-wrapper.properties文件中。2. 修改gradle.properties文件。原创 2023-10-30 10:39:54 · 421 阅读 · 0 评论 -
qgroundcontrol源码Andriod平台编译
gradle.properties(Project Properties)修改如下。10.修改gradle-wrapper.properties。7.右击工程,然后选择Build。9.修改build.gradle。2.安装Qt5.15.2。12.编译并安装QGC。原创 2023-09-17 11:22:06 · 1733 阅读 · 4 评论 -
Qt基于QOpenGLWidget使用OpenGL函数
选择QOpenGLWidget基类的initializeGL, resizeGL, paintGL 这三个虚函数然后点击OK。在OPENGL初始化函数与OPENGL绘制函数中进行数据初始化及绘制工作。7.使用基于QOpenGLWidget生成的窗口类。5.添加头文件并继承类QOpenGLWidget。6.重写基类三个OpenGL函数。1.创建QWidget应用。3.输入类型,点击下一步。2.右击工程添加文件。4.点击完成,将创建类。原创 2023-06-13 21:17:56 · 880 阅读 · 0 评论 -
Qt中使用OpenGL的三种方式
3. 继承QOpenGLWidget 与QOpenGLExtraFunctions。2. 继承QOpenGLFunctions类可直接使用OPENGL函数。通过使用QOpenGLContext来操作OPENGL函数。1.继承QOpenGLWidget并重写基类如下函数。在OPENGL中使用Shader。直接使用OPENGL函数。原创 2023-06-13 19:54:42 · 6567 阅读 · 2 评论 -
在QT中使用OPENGL的步聚
3.重载void initializeGL(),void paintGL()还有void resizeGL(int w, int h)7.绘制(使用shader读取缓存中的内容,转换为顶点,然后按照命令基于顶点绘制3D数据)6.绑定shader的缓存数据(告诉OpenGL如何从缓存中读取数据到shader中)3.绑定shader的全局数据(例如摄像机变换矩阵,投影矩阵等)// 绑定本模型需要的顶点缓冲。// 绑定本模型需要的顶点缓冲。5.绑定缓存(VBO)(加载变化的数据)2.启用shader。原创 2023-06-13 19:52:59 · 1406 阅读 · 0 评论 -
Qt5.12.6生成IOS工程报Cannot run target compiler解决
造成上面错误的原因是因为Qt版本太低,而XCode版本太高所导致。修改后,重新用QtCreator构造IOS工程,构建成功如下。成功安装demo应用到iPhone。修改toolchain.prf。Qmake生成IOS工程报。生成的xcode工程如下。原创 2023-06-11 17:59:57 · 444 阅读 · 0 评论 -
Qt5.12.6配置Android Arm开发环境(macOS)
选择SDK路径与NDK路径 ,如出现平台SDK未安装,点击Update Installed。至此,Android ARM开发环境配置OK。打开Perferences窗口。平台SDK安装中...2.配置安卓Arm环境。原创 2023-06-11 17:14:12 · 419 阅读 · 0 评论 -
Qt5.12.6配置Android Arm开发环境(Linux)
如出现Platform SDK或者Platform Build Tools未安装,点击Update Installed。Qt Version也可看到ARMv7与AMD-v8a。配置成功后可看到ARMv7与AMD-v8a kits。如果 有安装了CMake,也可看到CMake配置。选择JDK 1.8安装路径,SDK与NDK路径。创建支持ARM-v7与AMD-v8a支持的应用。2.安装android studio。安装SDK Platform。3.安装sdk 与ndk。原创 2023-06-11 10:16:27 · 1265 阅读 · 0 评论 -
Qt5.12.6配置Android Arm开发环境(windows)
安卓ARM环境配置成功如下: JDK1.8 , SDK 26 , NDK 19。在安装QT时要选择 ARMv7(32位CPU)与ARM64-v8a(64位CPU)SDK Platform 选择 Android SDK Platform 26。2.安装Android Studio 并安装 SDK 与NDK。点击下图所示按钮进行编译并安装到手机。选择支持android平台的示例。手机连接成功后会看到手机型号信息。连接手机到开发机器后点击OK。选择ARMv7平台并切换。成功安装到手机并运行。原创 2023-06-10 21:46:32 · 920 阅读 · 0 评论 -
QGroundControl系统MACOS平台安装与演示
QGroundControl系统MACOS平台安装与演示原创 2023-06-07 23:32:09 · 175 阅读 · 0 评论 -
开源飞行控制库QGroundControl认识
开源飞行控制库QGroundControl认识原创 2023-06-07 21:48:18 · 2279 阅读 · 0 评论 -
Linux下配置WebAssembly开发环境Emscripten SDK
打开Qt Creator,如果这前未配置过EMSDK,直接点击弹出提示按钮 Setup Emscripten SDK。打开Qt Creator选择emsdk目录,WebAssembly环境配置成功如下。克隆源码仓库成功后,进入emsdk目录。点击Emscripten SDK链接。开始用源码安装EMSDK并激活。源码更新到最新版本版本。原创 2023-06-05 13:41:58 · 822 阅读 · 0 评论 -
Linux下配置Qt6安卓开发环境
点出 Browser选择Android SDK目录下载好的android_openssl文件夹并打开。由于HTTPS问题造成无法下载,暂用Android Studio来安装Android SDK。Android JDK ,SDK 与命令行工具配置OK。配置QT的Android SDK路径。接下来配置android_ssl。选择NDK路径 然后点击OPEN。正在下载NDK及命令行工具。选择自己定义JDK安装路径。提示TLS初始化失败。安装NDK与命令行工具。NDK与工具下载完成。原创 2023-06-05 00:43:48 · 921 阅读 · 0 评论 -
ubuntu23.04安装最新版本Qt6.5.1
安装进行中,新版本QT支持GRPC与PB协议。3.开始在线安装Qt6.5.1。1.准备好Ubuntu系统。输入qt账号与密码点击下一步。支持WebAssembly。选择安装路径及安装方式。2.下载好Qt安装器。原创 2023-06-04 12:59:10 · 1522 阅读 · 2 评论 -
Qt5.12实战之线程信号与线程资源清理操作
在子线程的代码中要添加pthread_testcancel();当pthread_cleanup_pop(0) 传入的参数为0时不做任何操作。5.阻塞主线程,直到子线程执行完成。9.通过入栈与出栈清理线程占用资源。1.实现线程信号处理函数。2.注册线程信号处理函数。7.检测指定线程是否存在。8.取消正在运行的线程。支持取消的线程函数实现。原创 2023-04-24 09:36:20 · 395 阅读 · 0 评论 -
Qt5.12实战之线程属性使用
3.使用线程属性设置线程分离状态。5.取得线程属性结构对象。6.获取当前线程分离状态。7.释放线程属性占用资源。2.初始化线程属性对象。1.声明线程属性对象。原创 2023-04-23 12:06:53 · 274 阅读 · 0 评论 -
Qt5.12实战之POSIX多线程库使用
创建一个Qt控制台应用,然后复制最后面的示例源码,然后运行可显示 上图内容。1.使用前要先引用两个头文件。4.链接或者分离线程。原创 2023-04-22 11:20:44 · 435 阅读 · 0 评论 -
Qt5.12实战之图形编程初识
2.在虚函数 void paintEvent(QPaintEvent *event)的实现函数体中进行绘图。直线绘制: 30为点A的x坐标,230为点A的y坐标 , 350为点B的x坐标,230为点。2.绘制红色矩形: 10,10为矩形的x,y坐标 ,100,100为矩形的宽与高。3.画刷->QBrush-->自己定义画刷(QPixmap)2.画笔->QPen --->字体 (QFont)4.绘制事件->QPaintEvent。1. 绘图设备-> QPainter。修改画笔样式画圆角矩形。原创 2023-04-19 22:41:43 · 646 阅读 · 0 评论 -
Qt5.12实战之菜单栏工具栏与状态栏使用
和工具栏添加工具按钮的方法如下: (没有图标的工具栏只显示文本,有图标的,默认显示图标)在槽函数中实现相关的功能,点击该工具按钮时会执行到该槽函数中,执行实现的功能。下面为通过代码动态添加主菜单(一级菜单)及子菜单(二级菜单)如下图示。此时,运行程序,菜单栏可看到主菜单了,点击主菜单也会弹出 子菜单。选择信号后,然后点击OK后,会自动关联信号,并实现槽函数。上面是通过设计窗口添加的菜单,与为菜单添加点击事件处理。接下来为主菜单与子菜单关联信号与槽,使菜单点击有响应。选择信号后,点击OK,会自动创建槽函数。原创 2023-04-19 15:50:43 · 5730 阅读 · 0 评论 -
Qt5.12实战之文本与二进制文件读写操作
打开工程main.cpp,并添加下面代码,然后执行。原创 2023-04-16 14:35:21 · 1001 阅读 · 1 评论 -
Qt5.12實戰之Qt調用Linux靜態庫(.a)與動態庫(.so)
1.準備編譯好的靜態庫,複製到lib目錄 ,動態庫複製到bin目錄 2.創建Qt控制臺應用,並添加靜態庫引用右擊工程名call_liba,選擇添加擴展庫 選擇要添加的libtest.a 然後 點擊 OPEN 點擊Next後會自動添加靜態庫相關引用 到工程 的.pro文件 中生成的添加靜態庫配置如下: 點擊Finish後,工程的.pro文件中自動 增加上面的內容 現在可使用靜態庫 中的函數 了使用前要聲明 爲外部 函數 ,名稱與導入庫中的要一樣 動態庫的調用 和靜態庫一樣,不同的地方是引用的文件 是.s原创 2023-04-12 19:32:38 · 840 阅读 · 0 评论 -
Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用
1.編輯並輸入內容到test.cpp與test2.cpptest.cpptest2.cpp將test.cpp與test2.cpp編譯成目標文件: 一次性生成目標文件 與靜態庫 將生成 的test.o 與test2.o合併成 libtest.a靜態庫 下面將test.cpp與test2.cpp合併生成到libtest.so動態庫編輯並添加內容到app.cpp與app2.cpp中 編譯app.cpp並鏈接靜態庫libtest.a 生成 可執行程序 ./app運行程序 輸出 8原创 2023-04-12 18:47:59 · 728 阅读 · 0 评论 -
Qt5.12实战之Linux动态库编译生成与调用过程
复制动态库.so文件到/usr/lib或者/lib 然后执行ldconfig更新。4.编译成可执行程序并执行。现在执行,提示找不到动态库。2.编译成动态库so文件。原创 2023-04-12 15:59:22 · 997 阅读 · 0 评论 -
Qt5.12實戰之Linux靜態庫編譯與調用完整過程
1.安裝gedit2.使用gedit編輯靜態庫源文件test.cpp輸入下面內容 :如下圖操作: 保存test.cpp並編譯 爲目標文件如下圖示,生成目標文件test.o 使用ar將test.o生成libtest.a靜態庫 libtest.a如下圖所示 : 下面編寫一個簡單的可執行程序來調用靜態庫libtest.a靜態庫 在打開的app.cpp中輸入下面內容:如下圖所示 : 保存app.cpp並生成可執行程序-o app 表示生成的可執行文件名app.cpp原创 2023-04-12 14:51:08 · 451 阅读 · 0 评论 -
Qt5.12实战之Qt调用MFC DLL导出函数
3.在槽函数中使用QLibrary类来加载MFC导出库。1.先添加MFC导出库到QT工程。2.添加按钮并连接到槽。原创 2023-04-12 13:15:26 · 715 阅读 · 0 评论 -
保证C++或QT导出库函数名不改变的二种方式
使用 _declspec(dllexport) 导出函数 ,让C++编译器使用C语言方式编译C++源码,并指定调用约定为__cdecl 这样编译后的函数名不会被动.一种是通过修改后缀名为.c 这样C++编译器认为是C项目,会使用C编译器进行编译。另一种是在C++项目的.h文件中使用 extern "C" 来表示单个函数使用C方式编译。使用模块定义文件,并在其中指定导出函数在编译后的DLL中的名称不会被改变.//这里要使用C方式编译的多个方法。如果有多个函数要使用C方式进行编译可使用下面方式。原创 2023-04-07 13:45:08 · 972 阅读 · 0 评论 -
函数调用与函数名修饰约定
指编译器使用何种名字修饰来区分不同的函数,编译器在编译期间会为函数创建一个具有一定规则的修饰名,这叫名称修饰.C编译器与C++编译器的名称修饰不同.函数名@类名[@@QAE/@@IAE/@@AAE]返回类型代码 参数1代码 参数2代码 ...@Z。第一个H表示函数的返回类型,H表示为int类型,第二个H表示函数的参数 类型。0CMath@@QAE@H@Z @H表示返回值为int的构造函数。表示修饰名开始,f是函数名, @@YA表示是__cdecl调用约定 ,原创 2023-04-06 23:40:09 · 304 阅读 · 0 评论 -
Qt5.12实战之dll中导出类使用MAP映射及Def导出
打开.map文件,可看到函数在映射文件中的定义。复制映射文件的函数定义到def文件中并指定序号。生成生成工程,后可看到lib文件。1.创建类并声明及实现函数。修改工程配置为.dll。原创 2023-04-06 17:01:38 · 662 阅读 · 0 评论 -
Qt5.12实战之dll中导出类对象
直接通过类对象调用类成员,或者调用类静态成员。导入库引用头文件及指定你包含目录与库目录。链接器中的附加依赖项添加lib名。生成lib与dll文件。1.创建动态库并导出。原创 2023-04-06 15:53:01 · 639 阅读 · 0 评论 -
Qt5.12实战之dll中导出变量
使用.def文件定义导出变量名。生成lib与dll文件。指定包含目录与库目录。指定包含目录与库目录。原创 2023-04-06 15:05:40 · 707 阅读 · 0 评论