- 博客(24)
- 收藏
- 关注
原创 基于C#插件化的开发
本文介绍了三种C#插件化实现方案:1)反射和接口方案,通过定义统一接口和动态加载DLL实现插件化;2)配置文件方案,通过外部配置指定插件路径和类型;3)目录扫描方案,自动发现并加载指定目录下的插件。每种方案各有优劣:反射方案简洁高效但不够灵活,配置文件方案支持热更新但需维护配置,目录扫描方案适合完全动态场景。文章还提供了UI集成示例和关键注意事项,建议根据具体需求选择合适的方案来构建高扩展性的插件系统。
2025-08-04 20:01:38
254
原创 基于C++与C#的共享内存图像拉流方案
本文介绍了图像拉流开发中采用共享内存技术实现跨语言通信的方案。共享内存通过物理内存映射到不同进程的虚拟地址空间,消除了数据拷贝开销,特别适合大数据量、低延迟场景。文章详细分析了C++和C#两端的实现方法,包括内存映射创建、数据读写和资源释放等关键操作。测试数据显示该方法在1MB数据传输时延迟仅2.1ms,吞吐量可达980MB/s。同时强调了内存对齐、结构体布局匹配和指针生命周期管理等技术要点,确保跨语言通信的稳定性和性能。该方案有效解决了图像处理中高频次、大数据量传输的工程需求。
2025-08-04 19:59:37
412
原创 基于C#的事件局限性和高频触发的优化方案
本文针对C++到C#通信中高频事件推送的可靠性问题,提出队列发布优化方案。原直接发布方式存在事件丢失和线程阻塞风险,新方案采用线程安全队列(BlockingCollection)实现:1)限制队列容量1000;2)非阻塞入队(微秒级);3)3次重试机制。通过深拷贝和内存屏障保障数据完整性,实现订阅者耗时操作与回调线程隔离。性能对比显示队列方案在吞吐量和线程安全方面更优,适用于高频场景,但需注意深拷贝验证和队列监控。该方案有效解决了高并发下的可靠性问题。
2025-08-04 19:55:30
716
原创 WPF不相应空格的分析和正则表达的处理方式
WPF的输入事件(如 `PreviewTextInput` 或 `TextInput`)不会触发空格键事件
2024-12-08 10:48:26
503
原创 Qt编译时出现‘qml.qrc’ has modification time 21363s in the feture
Qt编译时出现问题:Warning:File ‘qml.qrc’ has modification time 21363s in the feture
2022-08-05 17:41:09
355
原创 QT的QsqlQuery使用prepare()和exec()用法上的误区
QT在使用sql语句时常用QSqlQuery query(m_db)通过通配符和sql语句的方法来实现1、通配符的方法一: QSqlQuery query(m_db); query.prepare( "SELECT * from function_sheilding WHERE sheildType = :type" ); QString str = "TOF"; query.bindValue(":type", str); if ( !query.exe
2022-04-07 20:18:16
4218
原创 QT 界面全选按钮互斥处理
通过findChildren来 查找界面上的所有的相同类型的对象然后同过遍历再有针对性的对按钮做处理int iChecked = 0;// 寻找ui下所有QCheckBox的对象,并返回指针数组QList<QCheckBox *> listCheck = this->findChildren<QCheckBox *>();// 遍历指针数组,绑定到slotResponseCheckClicked槽函数 //对所有按钮的响应都在该函数中实现foreach (QChe
2022-03-29 20:10:34
1070
原创 设备ssh连接失败问题
**设备ssh连接失败处理方法**Linux连接ssh失败的处理方法产生这个错误的原因:Ssh相同ip的数据密钥产生冲突导致。按照如上指令删除之前的ssh数据即可。Windows下SSH连接失败问题设备ssh连接出现这种问题的解决办法: 在重复连接相同设备的同一ip,出现过多次异常断连会出现这样的错误,主要的解决办法参考如下的方式进行处理。解决办法:...
2022-03-29 20:03:10
2831
原创 QSqlite数据库加密方法
代码实现:QSqlDatabase m_db = QSqlDatabase::addDatabase("SQLITECIPHER");//必须使用对应的驱动qDebug() << QSqlDatabase::drivers();QString DB_FILE_PATH = QDir::currentPath() + "/" + m_strDbPath; //qDebug() << "DB File Path is:" << DB_FILE_PATH;
2021-11-22 14:49:56
2618
原创 QT加载配置文件(.ini)的方法
这里是QT的一种用法,类似于boost库提供的序列化方法,但是更简洁,这里用的是QSettings的这个用法问题,方法如下:首先创建一个文件为.ini格式的文件,文件内部的格式都类似如下格式:此处是一种版本号的配置方法,类似于这种,每个相同格式都要通过这个方法来打开并获取其中的内容。 QString fileName = srcDirPath + "/versions.ini"; //创建配置文件 QSettings iniFile(fileNam
2021-11-22 14:39:36
1870
原创 QT debug出现错误
当QT进行DEBUG时会出现这种错误时:此时,是因为配置的编译器环境问题,可能是因为编译版本不匹配导致出现的问题,此时选择对应的编译器版本即可:例如我之前配置的环境是这个:现在我配置成这个编译器:这样问题就解决了。...
2021-11-22 14:23:29
2682
原创 Ubuntu异常关闭,不显示网络图标
虚拟机异常关闭将不显示网络配置的图标正常的情况下是这样的:异常关闭会导致这部分无法显示:此时可以通过如下命令进行配置:sudo service network-manager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo service network-manager startsudo vi /etc/NetworkManager/NetworkManager.conf把false改成trueSud
2021-11-22 14:16:16
902
原创 VS2017账号登录界面登录不上
**VS2017在下载后,试用期使用完,需要通过账号登录,但是大部分情况下直接登录是半天不会响应的解决登录不上的问题:登录会一直显示这个界面,半天没有反应:第一步:可以通过配置电脑的DNS来快速的登录账号:第二步:然后关闭打开的vs,重新打开,点击登陆界面:第三步:稍后即可登录成功!...
2021-11-22 13:58:18
4015
5
原创 模态对话框设置和虚拟键盘
模态和非模态模态对话框:在没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。非模态对话框:当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框,当运行的时候,你会发现当关闭这个对话框时,另一个对话框才显示;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。而model有独特的属性。
2021-07-10 16:54:10
866
1
原创 C++ 判断文件是否被打开,防止重复打开
如何判断文件是否已经被打开?在这里通过文件的一些属性实现判断文件是否被打开,通过QFile将文件尝试实现例如linux的move操作和rm -r 的操作,就可以判断是否文件被占用。首先添加#include"QFile"头文件,再设置全局的判断标志位:#include <QFile>#include <QDesktopServices>#include"qdebug.h"#include <windows.h>#include <QDir>#
2021-07-10 16:04:26
6735
原创 qml虚拟键盘的实现
qml虚拟键盘添加 在QGuiApplication之前添加QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);#include <QGuiApplication>#include <QQmlApplicationEngine>int main(int argc, char *argv[]){ qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboa
2021-06-23 19:19:54
1743
原创 QT虚拟键盘(QWidget)的实现
*QT虚拟键盘的实现:**在QApplication a(argc, argv);之前加上qputenv(“QT_IM_MODULE”, QByteArray(“qtvirtualkeyboard”));即可实现简易的虚拟键盘(qt自带的):main.cpp#include "mainwindow.h"#include <QApplication>#include"lineedit.h"#include <QtWidgets>#include"QDebug...
2021-06-22 10:38:10
6220
20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅