随笔分类 -  programme

软件开发
qt GUI 如何利用q thread 和qfuturwatcher 实现 不阻塞主线程?
摘要:这是我像deepseek提问得到回答 。我本意是问qt和std::thread怎样配合达到不阻塞主线程的目的。 他给出qt和std::thread的配合方式,比较啰嗦。而qt和qthread的配合相对简洁。我就先将qt,qthread的配合方式贴上。后面有我的理解。 在 Qt 中,要实现不阻塞主线程 阅读全文
posted @ 2026-02-27 16:11 keleman 阅读(21) 评论(0) 推荐(0)
做上位机软件设计 下位机软件设计
摘要:上位机软件设计和下位机软件设计是在基于计算机的控制系统中两个不同层次的软件设计概念,它们在功能、应用场景和设计要求上存在差异,具体如下: 上位机软件设计 功能:上位机软件主要用于实现人机交互、系统监控、数据分析与处理、任务调度等功能。它为用户提供一个直观的操作界面,方便用户对整个系统进行集中管理和控 阅读全文
posted @ 2025-04-23 09:15 keleman 阅读(285) 评论(0) 推荐(0)
qt 将槽函数在子线程中执行的方法
摘要:通过信号槽机制 对象A通过信号sginal1链接 子线程的成员对象B的槽函数slot1。 则 emit sginal1 后会在子线程中调用槽函数1 伪代码 Qthread b; B.movethread(&b); connect(&A,SIGNAL(XXX()),&B,SLOT(YYY())); 通 阅读全文
posted @ 2025-04-21 15:17 keleman 阅读(163) 评论(0) 推荐(0)
以二级指针作为函数参数,并从函数中分配空间的原理
摘要:如图,为什么在函数中分配空间需要用二级指针呢? 如第一图, 函数内部将指针P1 的内容(Data值)拷贝到指针P1'中。P1,P1'是 同一个指针(指向数值data),对P1'的操作能影响P1的内容 第二图 同理 函数内部将指针PP1的内容PP2 传给PP1'。PP2 和PP2'是同一个地址(指针) 阅读全文
posted @ 2025-04-03 15:53 keleman 阅读(41) 评论(0) 推荐(0)
std::forward<T> ,std::move 使用场景的区别
摘要:std::move 和 std::forward 都是 C++ 标准库中用于实现移动语义和完美转发的工具,但它们的使用场景有所不同,下面为你详细介绍它们各自的适用场景。 std::move 的使用场景 std::move 主要用于将一个左值强制转换为右值引用,从而可以触发移动语义。它通常在以下场景中 阅读全文
posted @ 2025-02-28 14:48 keleman 阅读(163) 评论(0) 推荐(0)
VS2017 设置 类模板参数推导(CTAD, Class Template Argument Deduction)
摘要:''#include std::mutex m_mutex; ... std::lock_guard lock(m_mutex); //A .. 以上代码编译 提示 C2955 ,没有模板参数 改为 std::lock_guardstd::mutex lock(m_mutex); 编译成功 但是 有 阅读全文
posted @ 2024-12-02 16:03 keleman 阅读(100) 评论(0) 推荐(0)
postEvent 和 sendEvent的区别
摘要:QApplication::postEvent(receriver ,qevent*.) 将事件发送到receiver 对象所在的子线程进行执行。 receiver对象需要重载 custEvent函数(又可以叫异步调用) QApplication::sendEvent(receiver,qevent 阅读全文
posted @ 2024-11-19 15:25 keleman 阅读(122) 评论(0) 推荐(0)
QObject Event( )customEvent( ) 函数区别
摘要:事件处理流程中的角色 event函数 event函数是QObject中事件处理的总入口。当有任何事件传递到一个QObject或者它的派生类对象时,这个函数首先被调用。它就像是一个事件调度中心,负责接收各种各样的事件,并根据事件的类型把它们分发给对应的具体处理函数。 例如,对于鼠标按下事件(QEven 阅读全文
posted @ 2024-11-19 15:18 keleman 阅读(127) 评论(0) 推荐(0)
关于实际项目中必要的几个文件操作接口
摘要:必要的成员: 文件路径 QString A 文件句柄 QFile B 数据流 QDataStream C 必要的接口 load(QString fileFullPaht);加载文件并构造和DataStream的联系 save();按数据 saveAs(QString fullPath);另存,该函数 阅读全文
posted @ 2024-11-19 10:21 keleman 阅读(33) 评论(0) 推荐(0)
QwaitCondition.的工作原理
摘要:背景: 之前 只知道个 QWaitCondition 用于同步不同的线程运行状态。但不知道为何这样做。为什么还要在QWaitcondition.wai( )中还要传入一个 QMutext 变量的指针。 QWaitCondition.wait 的工作原理: QWaitCondition.wait 的工 阅读全文
posted @ 2024-10-30 14:43 keleman 阅读(108) 评论(0) 推荐(0)
删除 anaconda 中的匿名环境
摘要:建立annconda 用 --prefix 指定路径 ~/tmp/xxx, 忘了设置名称 进入 ~/tmp 建立 xxx 目录 建立环境 conda create --prefix ./xxxx 显示环境 ,没有名称,只有环境路径 conda env list /home/tmp/xxx 删除时使用 阅读全文
posted @ 2024-04-26 11:08 keleman 阅读(129) 评论(0) 推荐(0)
anaconda 设置代理
摘要:使用公司内网的机器安装 anaconda ,要使用代理才能 正常联网 。如下几种方式但始终 不成功 提示代理错误 设置ananconda 的 .condarc 的 proxy_servers字段 https_proxy https://xxxx.sxxxx:8080 http_proxy http: 阅读全文
posted @ 2024-04-25 16:54 keleman 阅读(582) 评论(0) 推荐(0)
qt 事件机制解释
摘要:qt 事件机制解释 阅读全文
posted @ 2024-03-15 11:06 keleman 阅读(9) 评论(0) 推荐(0)
installEventFilter、eventFilter函数理解
摘要:installEventFilter函数如下: void QObject::installEventFilter(QObject *filterObj) Qt助手的解释如下: 在对象上安装一个事件过滤器filterObj。如下: monitoredObj->installEventFilter(fi 阅读全文
posted @ 2024-03-11 15:05 keleman 阅读(1193) 评论(0) 推荐(0)
QT信号与槽机制与事件机制的区别
摘要:QT信号与槽机制与事件机制的区别 第一:什么是信号与槽?事件? 所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,用自己的 阅读全文
posted @ 2024-03-11 14:33 keleman 阅读(679) 评论(0) 推荐(0)
lambda(持续补充)
摘要:1 lambda的捕获列表 类似于 bind 的参数绑定:将定义lambda定义处的绑定的变量值作为该lambda的固定参数。 e.g void callfunction() { int dd=100; int ee=200; auto lam= [dd,ee](int param1)->int{r 阅读全文
posted @ 2024-03-06 09:21 keleman 阅读(37) 评论(0) 推荐(0)
c++11的左值 右值的笔记
摘要:在 C++11的程序中,所有的值必须属于左值,将亡值,纯右值之一(持续补充)。 将亡值则是c++11新增的跟右值引用相关的表达式,这样表达式通常是将要被移动的对象(以为他用),比如返回右值引用T&&的函数返回值,std::move的返回值,或者转换为T&&的类型的转换函数的返回值。而剩余的,可以标识 阅读全文
posted @ 2024-02-05 10:50 keleman 阅读(33) 评论(0) 推荐(0)
boost 的 ref bind function<> signal 学习记录 总结
摘要:boost::ref 除了可以将变量 包装为引用,还可以将函数对象(bind function<>) 包装为应用,以便作为参数传递。 但std::ref 的功能除了上面的功能还能 将函数对象以引用方式传给 模板算法。而boost:ref则不行。 boost::bind 本质就是将已有的函数(常规函数 阅读全文
posted @ 2024-01-26 16:47 keleman 阅读(38) 评论(0) 推荐(0)
qthread 和 QWaitCondition配合 的 阻塞流程
摘要:背景: 在QThread的run函数中执行耗时工作。 示例代码 void wakeThread::run() { m_waitcondition.wait(); #1 if(getThreadState()==STOP) #2 { break; } for(int i=0;i<1000;++) #3 阅读全文
posted @ 2024-01-05 10:10 keleman 阅读(149) 评论(0) 推荐(0)
关于 qtextCursor 的使用点滴记录
摘要:1疑惑 如何得到 当前行的光标位置 您可以使用QPlainTextEdit的textCursor()方法来获取表示文本编辑光标当前位置的QTextCursor对象。 然后,您可以调用blockNumber()方法来获取当前行的行号, 调用positionInBlock()方法来获取光标在行内的位置( 阅读全文
posted @ 2024-01-04 16:23 keleman 阅读(708) 评论(0) 推荐(0)