- 博客(58)
- 收藏
- 关注
原创 qml的基本语法讲解
作用:可以把程序中使用的变量进行一个捆绑,当一个变量发生变化的时候,其他的变量也会发生变化,如果其他的变量绑定到了一些ui控件或者信号槽中使用的时候就会更新ui控件,或者触发信号槽。其次导入版本模块提供了可以选择的版本号,与普通的include不同的是,有了版本号就可以导入新旧两个版本的库,对于我们来说更好的明确了当前程序模块版本号,避免误用不同的版本库。负责导入对应的功能模块,qt把一些功能类似的模块放到了一起,导入的时候直接导入所需要的模块类型,减少了手动添加头文件的问题。信号处理器的命名规则是。
2025-12-27 17:27:15
274
原创 使用vscode创建qt的qml项目
调试这一块是很重要的一点,创建项目完成之后我们可以看到一个cmake构建的项目,这时候我们可以使用vscode官方(微软)提供的一个插件vscode tools,这个插件很智能的帮我们省去了配置调试的时间,大多数情况下可以直接调试。1当产生程序崩溃的时候,vscode不会自动跳到崩溃点,需要我们自己去寻找,在调试信息里面会有对应的信息。创建好项目,我们需要熟悉一下vscode的在编写代码的时候的一些工具的使用方法。2qdebug不会输出到控制台,但在调试的时候会输出到调试输出窗口。搜索qt:create。
2025-12-27 12:30:15
58
原创 qml实现文本的滑动边框
想要实现一个带滑动边框的文本有很多的方法,比如采用TextEdit加上Flickable或者ScrollView,但经过笔者的测试,上面两种都很难有一个满意的效果。最后采用了TextArea这个控件加上ScrollView,TextArea继承了TextEdit,有很多textedit不具备的功能,很适合用来做多行的文本编译器。
2025-12-27 10:36:34
25
原创 extern关键词讲解和对代码冗余的解决思路
这里我们先介绍一个编译模块的概念,每一个cpp文件就代表一个编译模块,一般情况下不同的编译模块之间的代码是不互通的,此时extern就告诉编译器,当前声明的变量在其他的模块中。解决代码的冗余有很多的方法,包括使用继承,模板类,extern,全局变量,static,友元函数,这里我最常使用的是比较简单的辅助类的方法。文件的读取是一件很耗费时间的,同时如果一个线程读一个写,这个时候就会一个线程读取的和一个现在已经存在的文件内容不一样,出现数据错误的问题。一个辅助类的设计能很大程度上减少程序的冗余。
2025-10-03 16:57:23
389
原创 c++乱码问题探究
比如使用我们的控制台的时候,使用vscode程序自带的输出框的时候,这些都是和系统的编码一致的,这个时候就需要我们去修改系统工具的编码,但这可能会到导致一些不可预料的问题,和正常电脑的环境出现差别,最好的方法是直接在程序中调整程序输出的数据为gbk编码。有些文本写入的库并不需要给出具体的编码格式,比如c++的标准库,默认是和系统相同的编码集,这个时候我们明确的制定编码格式,包括在读取的时候。c++编程中乱码的原因主要是数据存储的格式和解析的格式不匹配导致的。这就导致在编程的时候往往会出现乱码的情况。
2025-09-29 18:09:16
647
原创 qt5下载
因为笔者要使用qt5运行某一个程序,在大版本不变的情况下,qt5最高的版本可以最大限度的容纳qt5所有的版本,本来想下载5.15版本,但寻找几番5.15版本在在线下载并没有找到。另外的一种思路是使用国内的镜像网站,但从长期的角度来考虑,并非所有的资源都能够找到镜像,同时一些资料的查询也是国内所没有的。一般来说只需要msvc和mingw编译之后的库就可以,其他额外的模块在使用的时候再添加,qt的编辑器版本都是通用的。但qt官方的作为外网,下载速度还是比较慢的,需要使用一定的魔法。4qt5和qt6兼容的问题。
2025-09-29 15:34:57
247
原创 qt项目使用visual stdio的创建流程
将 Qt 开发工具集成到 Microsoft Visual Studio 2022 中,使开发人员能够使用他们熟悉的 Windows 环境,而不必担心Qt 相关的构建步骤或工具。下载步骤:扩展 --> 管理扩展 --> 浏览 --> 搜索“Qt” -->安装Qt Visual Studio Tools。
2025-09-28 15:15:59
810
原创 使用setGraphicsEffect重新设置阴影导致程序崩溃的问题
后面尝试了每次设置都创建新的阴影对象,没有报错,猜测函数内部删除了指针。查询了官方文档,印证了猜想,解决方法:创建局部变量。
2025-04-24 18:24:56
230
原创 ai常用提示词
setRenderHints(替换成你的单词)、翻译成中文什么意思,让我更好记忆他的hints(不理解的地方)不理解。一.辅助函数接口理解。
2025-04-21 10:39:53
126
原创 qt中的正则表达式
1.在文本中把dog替换成cat,但可能会把dog1替换成cat1,如果原本不想替换dog1,就会出现问题。2 搜索:在文本中快速找到符合某一特征的内容(比如提取所有的电话号码)3如果需要找到在不同的系统中寻找·换行符,可以查找/r/n,或者/n。3如果此时想找一些普通的文本,只需要简单的find,效率可能更快。3 替换:将符合格式的文本替换成其他内容(比如批量需改日期格式)2文本中想获取某种以.txt为结尾的多有文本,普通的不能使用。1 匹配:检查某一个文本是否符合某种格式(比如邮箱)
2025-04-14 20:17:16
421
原创 QScrCpy源码解析(4)获取手机端数据知识补充
adb的端口映射,最终目的是为了绕过防火墙的机制,这是因为,我们在使用adb的时候,一般会以管理员进行程序的执行,同时,我们电脑端和手机端的端口映射使用的一般是本地的IP地址,防火墙对于本地的IP 一般是不做限制的,并且我们使用的端口是5555,这个端口一般防火墙不会重点关注。此时,如果采用的方式是USB进行连接,传输的数据会直接通过USB线进行发送,默认的传输协议是TCP,而不会经过网卡,如果是WIFI进行连接的话,首先,我们需要打开手机的一个局域网IP热点,他会通过网卡进行一个数据的传输。
2025-04-13 20:51:03
492
原创 QScrCpy源码解析(3)监听手机usb端口
adbprocessimpl 子类,用于提供封装用户执行指令的逻辑,自己接收自己的信号,进行数据的处理。1在界面显示的时候初始化一个定时器,不断地查询当前设备连接到的手机安卓设备。2封装一个下发指令的进程类非单例,使用impl,进行一个代码的解耦。内部通过qprcess来执行代码逻辑(开辟一个进程),执行代码逻辑。AdbProcess 父类,用于用户层面的逻辑封装。adb可以通过命令行达到控制安卓手机的目的。采用的技术方式为adb。
2025-04-10 22:18:55
527
原创 QScrcpy源码解析(2)主界面设置
采用ui加上代码的组合设计界面,包括一个主窗口和左右两个窗口,整体布局是水平布局,左右窗口为垂直布局,采用组布局美化界面,模块分明。其中使用到了一个config的单例,根据读取的数据初始化界面,同时减少了配置文件的io消耗。通过qtranslator和qlocal完成的界面翻译,具体的代码。完成界面的初始设计之后开始对界面的文字做汉化处理。
2025-04-10 15:57:39
586
原创 QScrcpy源码解析(1)
克隆项目,并且把其中的QScrcpycroe文件夹替换成QScrcpycroe项目。4当有手机连接的时候发出信号,执行读取操作。5不断的读取数据,读取完成触发信号刷新画面。3根据主界面设置生成手机屏幕显示。6断开连接的时候关闭窗口。
2025-04-08 16:54:52
536
原创 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
478
原创 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
587
2
原创 liunx输入法
5解决一些环境配置问题,语言系统匹配官方要求的版本(自己查找)点击系统弹出语言和支持选择键盘输入法系统。把搜狗输入法放到第一位(点击下面的加号)设置-》系统-》区域和语言。如果没显示需要重启电脑。
2025-04-05 22:28:00
405
原创 出现 `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
470
原创 qt介绍之qscreen
• `primaryOrientation()`:返回屏幕的当前方向(例如,`Qt::PrimaryOrientation`)。• `availableGeometry()`:返回屏幕的有效矩形区域(不包括任务栏等),以`QRect`形式表示。• `geometry()`:返回屏幕的矩形区域(包括任务栏等),以`QRect`形式表示。• `physicalDotsPerInch()`:返回屏幕的物理 DPI(每英寸点数)。• `size()`:返回屏幕的物理尺寸,以像素为单位,以`QSize`形式表示。
2025-03-19 16:09:05
790
原创 qt事件过滤器
事件(如鼠标点击、键盘输入等)会按照一定的顺序在对象之间传递。事件的传递路径通常是从顶层窗口(如 QApplication )开始,逐级向下传递到具体的控件(如 QPushButton )。每个对象都有机会处理事件,如果对象没有处理事件,则事件会继续向下传递。qt的事件过滤器可以再事件到达指定窗口之前进行一些操作,执行完操作可以选择是否拦截事件,如果拦截那么事件就不会到达指定窗口。绑定到一个目标窗口上上。
2025-03-19 15:11:06
199
原创 QMediaPlayer 详细介绍
可以通过继承`QVideoWidget`并重写`keyPressEvent()`和`mousePressEvent()`方法来解决。• `QGraphicsVideoItem`:适用于 Qt 的图形/视图架构(`QGraphicsView`),可以将视频作为一个图形项与其他图形项组合显示,并支持缩放、旋转等功能。• `QVideoWidget`:一个基于`QWidget`的视频显示组件,适用于简单的视频播放场景。• `setPosition(qint64 position)`:设置播放位置(单位为毫秒)。
2025-03-17 21:17:52
1286
原创 qt基本的概念
1.抗锯齿:通过 QPainter::setRenderHint(QPainter::Antialiasing) 启用,使线条和曲线更加平滑。3 渐变:通过 QLinearGradient 和 QRadialGradient 创建颜色过渡效果。2坐标变换:通过 translate 、 rotate 和 scale 方法调整绘图坐标系。4 动画:通过 QTimer 或 QPropertyAnimation 实现动态效果。
2025-03-17 20:05:42
127
原创 使用md5进行密码签名
客户端接收,账户加上密码和盐计算出md5加上当前时间一起发送。服务端接收,计算出md5值(密码加上盐),存到数据库中。服务端:如果超时显示重试,如果md5一样代表密码正确。客户端向服务端通过对称加密发送自己的账户名加上密码。隐藏用户的密码,客户端不保留任何信息。服务端发送对应的盐和记住当前时间,客户端发送自己的账户信息。
2025-03-15 10:18:24
153
原创 面试题目收集
进程之间的内存是隔离的。5. std::unordered_map :基于哈希表的关联容器,存储键值对,查找效率高(平均 O(1)),不保证顺序,适合快速查找的场景,如字典实现和缓存。2. std::map :基于红黑树的关联容器,存储键值对,按键的顺序排列,查找效率高(O(log n)),适合需要按键排序的场景,如字典实现和索引映射。4. std::list :双向链表,支持在任意位置快速插入和删除元素(O(1)),但不支持随机访问,适合需要频繁插入和删除的场景,如任务队列和缓存管理。
2025-03-14 21:56:16
330
原创 常用的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
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅