【Qt】开源项目汇总

争取持续更新,每月研究一个,可能不只是Qt,人工智能。

Qt官方github:https://github.com/orgs/qt/repositories
DeepMind:https://github.com/google-deepmind

0、汇总

开源项目推荐:本人收集的有关Qt的GitHub/Gitee开源项目(★精品收藏★)
Qt优秀开源项目
C++开源项目汇总:https://github.com/fffaraz/awesome-cpp
purecpp官方:https://github.com/qicosmos
https://github.com/cameron314

语法大全:https://github.com/sindresorhus/awesome
https://github.com/fffaraz/awesome-cpp
https://github.com/fffaraz/awesome-cpp#readme
https://github.com/vitalets/github-trending-repos

1、QtPromise

github地址:https://github.com/simonbrunel/qtpromise
Promise是一种异步编程的解决方案,可以替代传统的解决方案——回调函数和事件

2、QtService

github地址:https://github.com/qtproject/qt-solutions/tree/master/qtservice
QtService是一个用于实现Windows服务或unix守护进程的开源项目

3、QuickEvent

https://gitee.com/fmldd/Quick-Event
QuickEvent使用介绍
基于Qt事件发布与订阅框架QuickEvent

4、QtEventBus(用到QtPromise、QtComposition)

这是一个用信号槽实现的消息总线
Qt 框架性开发实践——基础框架篇
https://github.com/cmguo/QtEventBus

5、QtService

Qt优秀开源项目之十八:QtService
https://github.com/qtproject/qt-solutions/tree/master/qtservice

6、QFlightInstruments

https://github.com/wyyrepo/QFlightInstruments

7、Qt-Advanced-Docking-System

Qt优秀开源项目之二:Qt-Advanced-Docking-System
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System

8、libgitlevtbus

Qt 之 事件总线模型
https://github.com/lheric/libgitlevtbus

9、yalantinglibs雅兰亭库

中文介绍
https://github.com/alibaba/yalantinglibs
c++雅兰亭库 (yalantinglibs) 介绍及使用(序列化、json和结构体转换、协程)
yaLanTingLibs 是一个现代C++基础工具库的集合, 现在它包括 struct_pack, struct_json, struct_xml, struct_yaml, struct_pb, easylog, coro_rpc, coro_io, coro_http 和 async_simple。

10、concurrentqueue

并发:https://github.com/cameron314/concurrentqueue
单线:https://github.com/cameron314/readerwriterqueue
<项目优化C++>:concurrentqueue(高性能并发队列)
C++无锁队列concurrentqueue的使用和性能速度测试

11、观察者模式库

https://github.com/dacap/observable
C++优雅地开启/暂停/停止线程——基于观察者模式

12、序列化工具

官方:https://github.com/google/flatbuffers
文档:https://flatbuffers.dev/
FlatBuffers使用详解
使用FlatBuffers序列化数据
c++11二进制序列化库

13、日志

https://github.com/MEONMedical/Log4Qt

14、工业软件

Qt工业软件收录

15、安装程序制作

https://github.com/MEONMedical/installer-framework
文档:https://doc.qt.io/qtinstallerframework/ifw-overview.html

16、http

https://github.com/qt-labs/qthttpserver
https://github.com/fffaraz/QtWebApp
https://github.com/antlafarge/QtWebsocket

17、sdr

https://github.com/gqrx-sdr/gqrx
https://www.gqrx.dk/

https://github.com/ha7ilm/qtcsdr

17、SDRPlusPlus

https://github.com/AlexandreRouma/SDRPlusPlus
fork上面的:https://github.com/jj1bdx/SDRPlusPlus

18、数据可视化

信号分析及数据可视化软件:https://github.com/czyt1988/sa

19、界面

https://github.com/seanchas116/qtimgui

20、opc-ua

https://github.com/qt/qtopcua

21、FtpServer

https://github.com/sashoalm/QFtpServer

22、ElaWidgetTools

https://github.com/Liniyous/ElaWidgetTools
ElaWidgetTools—bilibili介绍视频

23、AirSim

https://github.com/microsoft/AirSim
AirSim英文文档
AirSim中文文档
AirSim是一个基于虚幻引擎以模拟汽车、无人机的模拟器(物理和视觉仿真)。AirSim仿真模拟平台是开源、跨平台、支持诸如PX4、和ArduPilot 等常见的硬件在环(hardware-in-loop)飞行遥控器。AirSim是一个虚幻引擎插件,所以它可被移植到任意的虚幻环境中。同样有一个试验性的Unity版本插件。

24、AFSim

关于AFSIM
AFSIM 2.9.0 Documentation

AFSIM(Advanced Framework for Simulation, Integration, and Modeling)是一款由美国空军研究实验室(AFRL)开发和维护的高级仿真、集成和建模框架。
通信框架(DIS、HLA、DDS、RPC),建模标准(MBSE、Modelica),仿真平台(EADSIM、FLAMS、STK、VRFORCE、AFSIM)

25、Virtual Radar Server

使用语言:TypeScript和C# 6
官网:https://www.virtualradarserver.co.uk/
github: https://github.com/vradarserver/vrs
推荐开源项目:Virtual Radar Server
如何有效提升ADS-B的接收效果?不妨试试微带滤波器和低噪放的组合

26、RingBuffer

RingBuffer 的单次读写操作可以达到纳秒级别的性能:
https://github.com/qzm/ringbuffer

#include "ringbuffer.hpp"
#include <iostream>
#include <thread>
#include <vector>
#include <chrono>

void producer(RingBuffer<int, 1024>& buffer, int count) {
    for (int i = 0; i < count; ++i) {
        while (!buffer.Write(i)) {
            // 缓冲区已满,等待一小段时间
            std::this_thread::yield();
        }
    }
}

void consumer(RingBuffer<int, 1024>& buffer, int count) {
    int value;
    int received = 0;
    
    while (received < count) {
        if (buffer.Read(value)) {
            ++received;
        } else {
            // 缓冲区为空,等待一小段时间
            std::this_thread::yield();
        }
    }
}

// 批量操作示例
void batchExample() {
    RingBuffer<int, 1024> buffer;
    
    // 准备批量写入的数据
    std::vector<int> dataToWrite(100);
    for (int i = 0; i < 100; ++i) {
        dataToWrite[i] = i;
    }
    
    // 批量写入
    size_t written = buffer.WriteBatch(dataToWrite.data(), dataToWrite.size());
    std::cout << "批量写入元素数量: " << written << std::endl;
    
    // 准备批量读取的缓冲区
    std::vector<int> dataRead(100);
    
    // 批量读取
    size_t read = buffer.ReadBatch(dataRead.data(), dataRead.size());
    std::cout << "批量读取元素数量: " << read << std::endl;
    
    // 打印读取的数据
    for (size_t i = 0; i < read; ++i) {
        std::cout << dataRead[i] << " ";
    }
    std::cout << std::endl;
}

// 性能测试示例
void performanceTest() {
    RingBuffer<int, 1024> buffer;
    const int count = 10000000;  // 1千万次操作
    
    auto start = std::chrono::high_resolution_clock::now();
    
    std::thread prod(producer, std::ref(buffer), count);
    std::thread cons(consumer, std::ref(buffer), count);
    
    prod.join();
    cons.join();
    
    auto end = std::chrono::high_resolution_clock::now();
    auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();
    
    std::cout << "处理 " << count << " 个元素耗时: " << duration << " 纳秒" << std::endl;
    std::cout << "平均每个操作耗时: " << duration / (count * 2.0) << " 纳秒" << std::endl;
}

int main() {
    // 基本使用示例
    RingBuffer<int, 1024> ringBuffer;
    
    // 写入数据
    for (int i = 0; i < 100; ++i) {
        bool success = ringBuffer.Write(i);
        if (success) {
            std::cout << "写入数据:" << i << std::endl;
        } else {
            std::cout << "RingBuffer 已满,写入失败" << std::endl;
        }
    }
    
    // 读取数据
    int data;
    while (ringBuffer.Read(data)) {
        std::cout << "读取数据:" << data << std::endl;
    }
    
    // 批量操作示例
    batchExample();
    
    // 性能测试
    performanceTest();
    
    return 0;
}

27、tinyxml2

【Github】: https://github.com/leethomason/tinyxml2
TinyXML2 的基本使用

28、通信中间件

一个性能强悍的通信中间件
该通信中间件整合进程间和进程内通信技术,对外提供同一接口,非常适合分布式系统以及大规模协同开发,其中进程间通信zmq完成。

(1)进程内通信,支持发布订阅模式下进程内通信
(2)进程间通信,支持发布订阅模式下进程间通信
(3)主题发现,支持其他节点注册主题发现通知消息
(4)节点发现,支持节点上线、下线通知消息
(5)报文统计,支持各个节点报文收发报文数统计
(6)性能:支持每秒10万+(256字节/包)数据分发
(7)系统支持,windows(win7、win10、win11等),linux(ubuntu、kylin),硬件支持x86、arm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值