- 博客(43)
- 收藏
- 关注
原创 qt中的正则表达式
1.在文本中把dog替换成cat,但可能会把dog1替换成cat1,如果原本不想替换dog1,就会出现问题。2 搜索:在文本中快速找到符合某一特征的内容(比如提取所有的电话号码)3如果需要找到在不同的系统中寻找·换行符,可以查找/r/n,或者/n。3如果此时想找一些普通的文本,只需要简单的find,效率可能更快。3 替换:将符合格式的文本替换成其他内容(比如批量需改日期格式)2文本中想获取某种以.txt为结尾的多有文本,普通的不能使用。1 匹配:检查某一个文本是否符合某种格式(比如邮箱)
2025-04-14 20:17:16
173
原创 QScrCpy源码解析(4)获取手机端数据知识补充
adb的端口映射,最终目的是为了绕过防火墙的机制,这是因为,我们在使用adb的时候,一般会以管理员进行程序的执行,同时,我们电脑端和手机端的端口映射使用的一般是本地的IP地址,防火墙对于本地的IP 一般是不做限制的,并且我们使用的端口是5555,这个端口一般防火墙不会重点关注。此时,如果采用的方式是USB进行连接,传输的数据会直接通过USB线进行发送,默认的传输协议是TCP,而不会经过网卡,如果是WIFI进行连接的话,首先,我们需要打开手机的一个局域网IP热点,他会通过网卡进行一个数据的传输。
2025-04-13 20:51:03
335
原创 QScrCpy源码解析(3)监听手机usb端口
adbprocessimpl 子类,用于提供封装用户执行指令的逻辑,自己接收自己的信号,进行数据的处理。1在界面显示的时候初始化一个定时器,不断地查询当前设备连接到的手机安卓设备。2封装一个下发指令的进程类非单例,使用impl,进行一个代码的解耦。内部通过qprcess来执行代码逻辑(开辟一个进程),执行代码逻辑。AdbProcess 父类,用于用户层面的逻辑封装。adb可以通过命令行达到控制安卓手机的目的。采用的技术方式为adb。
2025-04-10 22:18:55
407
原创 QScrcpy源码解析(2)主界面设置
采用ui加上代码的组合设计界面,包括一个主窗口和左右两个窗口,整体布局是水平布局,左右窗口为垂直布局,采用组布局美化界面,模块分明。其中使用到了一个config的单例,根据读取的数据初始化界面,同时减少了配置文件的io消耗。通过qtranslator和qlocal完成的界面翻译,具体的代码。完成界面的初始设计之后开始对界面的文字做汉化处理。
2025-04-10 15:57:39
216
原创 QScrcpy源码解析(1)
克隆项目,并且把其中的QScrcpycroe文件夹替换成QScrcpycroe项目。4当有手机连接的时候发出信号,执行读取操作。5不断的读取数据,读取完成触发信号刷新画面。3根据主界面设置生成手机屏幕显示。6断开连接的时候关闭窗口。
2025-04-08 16:54:52
300
原创 liunx下设置fcitx框架无效
请参考 im-config(8) 和 /usr/share/doc/im-config/README.Debian.gz。cat ~/.xinputrc # 应显示"im-config: fcitx"设置 用户设置 /home/luobo/.xinputrc 为 fcitx。fcitx-autostart --replace # 启动新实例。im-config -n fcitx # 确认配置为fcitx。fcitx-config-gtk3 # 打开配置界面添加输入法。
2025-04-06 12:15:47
282
原创 libreoffice-help-common` 的版本(`24.8.5`)与官方源要求的版本(`24.2.7`)不一致
系统中可能启用了第三方软件源(如 PPA 或 backports 源),导致 `libreoffice-help-common` 的版本(`24.8.5`)与官方源要求的版本(`24.2.7`)不一致。`libreoffice-help-en-gb` 需要严格匹配 `libreoffice-help-common` 的版本,而新版本未向下兼容,导致系统无法自动解决依赖。- 用户可能启用了 `Ubuntu Pro` 或第三方仓库,提供了更新的测试版(`24.8.5`),但未完全适配依赖关系。
2025-04-05 22:30:14
339
1
原创 liunx输入法
5解决一些环境配置问题,语言系统匹配官方要求的版本(自己查找)点击系统弹出语言和支持选择键盘输入法系统。把搜狗输入法放到第一位(点击下面的加号)设置-》系统-》区域和语言。如果没显示需要重启电脑。
2025-04-05 22:28:00
247
原创 出现 `dpkg: error processing package thunderbird (--configure)` 和 `Sub-process /usr/bin/dpkg returned
3. **Snap 安装冲突**:在某些情况下,Snap 安装的 Thunderbird 可能与其他安装方式冲突,或者 Snap 的安装规则限制了 Thunderbird 的安装。1. **安装过程中断**:如果 Thunderbird 的安装过程被意外中断(例如系统突然断电、强制终止安装等),可能会导致软件包损坏。2. **依赖关系问题**:某些依赖包可能未正确安装或配置,导致 Thunderbird 无法正常安装。5. **损坏的 dpkg 数据库**:dpkg 数据库可能由于之前的错误操作而损坏。
2025-04-05 22:07:43
121
原创 qt介绍之qscreen
• `primaryOrientation()`:返回屏幕的当前方向(例如,`Qt::PrimaryOrientation`)。• `availableGeometry()`:返回屏幕的有效矩形区域(不包括任务栏等),以`QRect`形式表示。• `geometry()`:返回屏幕的矩形区域(包括任务栏等),以`QRect`形式表示。• `physicalDotsPerInch()`:返回屏幕的物理 DPI(每英寸点数)。• `size()`:返回屏幕的物理尺寸,以像素为单位,以`QSize`形式表示。
2025-03-19 16:09:05
547
原创 qt事件过滤器
事件(如鼠标点击、键盘输入等)会按照一定的顺序在对象之间传递。事件的传递路径通常是从顶层窗口(如 QApplication )开始,逐级向下传递到具体的控件(如 QPushButton )。每个对象都有机会处理事件,如果对象没有处理事件,则事件会继续向下传递。qt的事件过滤器可以再事件到达指定窗口之前进行一些操作,执行完操作可以选择是否拦截事件,如果拦截那么事件就不会到达指定窗口。绑定到一个目标窗口上上。
2025-03-19 15:11:06
147
原创 QMediaPlayer 详细介绍
可以通过继承`QVideoWidget`并重写`keyPressEvent()`和`mousePressEvent()`方法来解决。• `QGraphicsVideoItem`:适用于 Qt 的图形/视图架构(`QGraphicsView`),可以将视频作为一个图形项与其他图形项组合显示,并支持缩放、旋转等功能。• `QVideoWidget`:一个基于`QWidget`的视频显示组件,适用于简单的视频播放场景。• `setPosition(qint64 position)`:设置播放位置(单位为毫秒)。
2025-03-17 21:17:52
776
原创 qt基本的概念
1.抗锯齿:通过 QPainter::setRenderHint(QPainter::Antialiasing) 启用,使线条和曲线更加平滑。3 渐变:通过 QLinearGradient 和 QRadialGradient 创建颜色过渡效果。2坐标变换:通过 translate 、 rotate 和 scale 方法调整绘图坐标系。4 动画:通过 QTimer 或 QPropertyAnimation 实现动态效果。
2025-03-17 20:05:42
79
原创 使用md5进行密码签名
客户端接收,账户加上密码和盐计算出md5加上当前时间一起发送。服务端接收,计算出md5值(密码加上盐),存到数据库中。服务端:如果超时显示重试,如果md5一样代表密码正确。客户端向服务端通过对称加密发送自己的账户名加上密码。隐藏用户的密码,客户端不保留任何信息。服务端发送对应的盐和记住当前时间,客户端发送自己的账户信息。
2025-03-15 10:18:24
81
原创 面试题目收集
进程之间的内存是隔离的。5. std::unordered_map :基于哈希表的关联容器,存储键值对,查找效率高(平均 O(1)),不保证顺序,适合快速查找的场景,如字典实现和缓存。2. std::map :基于红黑树的关联容器,存储键值对,按键的顺序排列,查找效率高(O(log n)),适合需要按键排序的场景,如字典实现和索引映射。4. std::list :双向链表,支持在任意位置快速插入和删除元素(O(1)),但不支持随机访问,适合需要频繁插入和删除的场景,如任务队列和缓存管理。
2025-03-14 21:56:16
297
原创 常用的c++11新特性
3智能指针(`std::unique_ptr`、`std::shared_ptr`)使用场景:简化复杂类型的声明,尤其是在处理迭代器或模板时。使用场景:自动管理动态分配的内存,避免内存泄漏。使用场景:明确表示空指针,避免与整数混淆。使用场景:简化回调函数和内联函数的编写。7线程支持(`std::thread`)使用场景:简化对象和容器的初始化。1自动类型推导(auto)5 基于范围的for循环。使用场景:简化容器遍历。6nullptr`关键字。实现通用类,实现递归操作。2 Lambda表达式。
2025-03-14 18:43:27
97
原创 自定义控件
自定义控件是通过继承 Qt 现有的控件类(如`QWidget`、`QPushButton`、`QLabel`等)或组合多个控件,创建出具有特定功能和外观的新控件。• 例如,将`QLabel`和`QLineEdit`组合成一个带标签的输入框,或者将`QSlider`和`QSpinBox`组合成一个数值调节控件。• 如果继承自输入控件(如`QLineEdit`或`QSpinBox`),可以重写`validate()`方法来实现自定义的数据验证。• 例如,一个自定义的进度条、一个圆形按钮或一个自定义的绘图控件。
2025-03-13 14:19:33
306
原创 QSpacerItem介绍
QSpacerItem`是Qt框架中的一个类,用于在布局管理器(如`QHBoxLayout`、`QVBoxLayout`或`QGridLayout`)中添加空白空间。总之,`QSpacerItem`是一个非常实用的工具,能够帮助开发者更好地控制Qt布局中的空白区域,从而实现更加灵活和美观的用户界面。• 如果需要在布局中添加多个空白区域,可以通过多次调用`addItem`或`addStretch`方法实现。• 在使用`QGridLayout`时,也可以通过`QSpacerItem`来控制行或列的空白区域。
2025-03-13 11:24:40
593
原创 命名规则1
2. **自注释性**:通过名称直接表达用途(如 `m_health` 比 `m_h` 更清晰)。- **命名风格**:**前缀 `g_` + 蛇形命名法**(谨慎使用,尽量替代)- **命名风格**:**前缀 `m_` + 蛇形命名法**(明确区分成员变量)- **命名风格**:**前缀 `s_` + 蛇形命名法**(标识静态生命周期)- **枚举值**:**全大写蛇形命名法**(或首字母大写的帕斯卡法,需统一)- **命名风格**:**帕斯卡命名法**(强调行为,与类名风格一致)
2025-03-12 22:50:33
403
原创 http解析器demo(需要配置http_parser库)
系统交互的HTTP/JSON消息自动解析、请求任务参数提取、AGV状态查询响应数据快速封装;
2025-03-12 17:29:10
229
原创 const使用(使用场景:增强代码可读性)
表示函数是一个常函数,不修改对象的值。修饰函数,使返回值或者类成员不改变。表示返回值为一个const变量。指向的是一个常量,不能修改。指针是常量,指向不能修改。
2025-03-12 11:00:53
68
原创 http-parser配置(liunx下)
unzip /home/luobo/projects/sever_net/httpparser/http-parser-main.zip(后面为当前文件的路径)2把库文件放到liunx服务端,可以通过vscode的ssh。库的优势:内存占用少,速度快,一般用在嵌入式机器之上。7配置项目中cmake。5把文件放到指定目录。
2025-03-12 09:09:16
149
原创 日志模块实现
优点:使用本地套接字加上单进程中的单进程写入,避免了锁的使用,保证了日志的独立性。多进程非阻塞日志进程实现。适用场景:写入数据不多。
2025-03-11 09:21:47
163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人