- 博客(76)
- 收藏
- 关注
原创 qt的模态和非模态状态
例子:我们创建了一个自定义控件QtNdiContentWidget类。1.继承QWidget类。2.继承QDialog类。
2025-12-31 09:47:01
145
原创 对于需要切换文本状态的变化,我们可以设置参数bool类型
本文介绍了一种优化UI重复代码的方法,通过设置状态函数来动态改变界面文本。示例展示了在患者管理系统中,新建和修改病历共用一个UI界面,利用SetCurrentState函数根据bCreate参数值切换显示"新建病历"或"修改病历"的标题文本。这种方法避免了重复编写相似UI代码,提高了代码复用性和维护性。
2025-12-11 17:31:56
86
原创 Eigen库的使用之Vector3d的使用
Eigen::Vector3d元素访问方式总结:1)下标访问([]/()),需注意索引从0开始;2)成员函数访问(x()/y()/z()),推荐使用;3)数据指针访问(data()),适合高性能场景;4)C++17结构化绑定;5)矩阵式访问。建议优先使用x()/y()/z()成员函数,兼具可读性和安全性,data()指针适合与C库交互。注意索引范围(0-2)和大小写规范,避免越界错误。
2025-10-15 16:59:39
554
原创 Qt关联信号槽的几种方式
Qt信号与槽机制是Qt编程的核心,主要用于对象间通信。本文介绍了四种实现方式:1)通过UI设计器右键转到槽自动生成;2)使用Signal&Slots Editor视图手动关联;3)遵循"on_控件名_信号"命名规则自定义槽函数;4)使用connect函数显式连接。其中connect方式最为通用,前三种主要适用于UI控件。信号与槽机制实现了松耦合的事件处理,当信号触发时自动调用对应槽函数执行特定操作。掌握这些方法能有效提升Qt开发效率。
2025-10-15 10:58:25
303
原创 qt如何将控件隐藏(以按钮为例)
Qt中隐藏按钮的常用方法:1)setVisible(false)可动态切换显示/隐藏,适合事件响应;2)hide()直接隐藏但可能保留布局空间,需配合removeWidget()彻底移除。
2025-10-15 10:37:00
293
原创 QT的QVariant关键字使用
摘要:QVariant是Qt框架中的通用数据类型容器,能够存储多种数据类型(如int、double、QString等)并通过toType()方法进行类型转换。它支持与QMap结合构建键值对容器,也能作为QVariantList/QVariantMap使用。示例展示了如何存储基本类型、QColor对象,以及进行类型判断和转换。特别适用于需要处理异构数据的场景,但需注意其对枚举和自定义类型的特殊处理要求。
2025-07-09 10:03:47
475
原创 QT窗口布局
Qt窗口布局提供了水平、垂直和网格三种样式,能够动态调整子控件位置以适应窗口大小变化,避免固定坐标导致的显示问题。布局可以无限嵌套,满足复杂界面设计需求。使用弹簧(水平/垂直)可实现控件对齐和间距调整,其中Expanding类型弹簧最常用。所有窗口都应设置布局,否则可能导致子控件无法显示。通过合理运用布局和弹簧,可以创建美观且自适应的GUI界面。
2025-07-08 11:07:16
443
原创 QT多线程的实现方式
四种多线程实现方式:1)继承QThread类重写run()方法;2)使用moveToThread将QObject对象移至子线程;3)使用QRunnable和QThreadPool线程池;4)使用QtConcurrent高级API。文章比较了各种方法的优缺点,重点说明了线程同步机制、线程间通信以及任务管理技术要点,并提供了代码示例。
2025-07-08 10:41:48
1291
原创 QT的事件过滤器eventFilter
Qt事件过滤器机制允许对象拦截处理其他对象的事件。通过installEventFilter()安装过滤器,在监视对象中重写eventFilter()进行事件处理,返回true拦截事件或false继续传递。事件传递时先执行过滤器再到达目标对象,多个过滤器按逆序执行。使用后可通过removeEventFilter()移除。
2025-07-07 15:16:40
320
原创 github删除不想要的仓库项目
按钮后,进入项目设置界面,直接划到最底部,点击delete this repository。1.第一步,点击项目地址进去,点击settings。3.第三步,在弹出的界面中输入自己的项目地址名。
2025-06-20 10:00:42
376
原创 【无标题】
Qt智能指针QSharedPointer 与 C++中的std::shared_ptr其作用是一样的,其应用范围比我们前面说到的QPointer和QScopedPointer更广。
2025-06-04 10:53:07
482
原创 qt的智能指针
Qt智能指针机制解析:1. QPointer是Qt提供的弱指针,当指向的QObject对象被删除时会自动置空,避免野指针问题;2. QScopedPointer用于作用域内自动管理对象生命周期,出作用域自动释放,但不能作为返回值;3. QSharedPointer采用引用计数机制,支持跨函数传递,其引用计数操作是线程安全的,但指向的资源仍需单独保护。三种智能指针各具特点:QPointer专用于QObject对象跟踪,QScopedPointer适合局部资源管理,QSharedPointer则适用于需要共享所
2025-06-04 10:43:06
436
原创 1.设计师界面进行ui设计
在QWidget窗口中,设计了一个网格布局,确保文本框、按钮、标签等控件能够一一对应排列。文本框设置为只读模式,通过修改readonly属性禁止手动输入。标签控件进行了功能提升,以增强其显示效果。此外,为窗口整体添加了样式表,进一步优化了界面外观。最终实现的窗口布局清晰,控件功能明确,界面风格统一
2025-05-21 10:20:03
200
原创 VS打断点调试,无法命中断点或断点失效,解决方法
在调试C/C++程序时,正确配置项目属性是确保调试信息准确生成的关键。首先,打开需要打断点的模块,进入属性设置,将C/C++常规中的调试信息格式改为“程序数据库(/Zi)”,以便生成更详细的调试信息。
2025-05-13 16:08:33
1626
1
原创 VS无法命中断点调试
在vs里边,工具 ——> 选项 ——> 调试 ——> 常规,然后取消【启用“仅我的代码”】和【要求源文件与原始版本完全匹配】前面的勾即可。我们在用vs进行debug时,有的时候会出现无法打断点单调试,提示当前不会命中断点,还没有为该文档加载任何符号。
2025-04-14 15:37:04
575
原创 VS2019密钥
Visual Studio 2019 Enterprise(企业版):BF8Y8-GN2QH-T84XB-QVY3B-RC4DFVisual Studio 2019 Professional(专业版):NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y
2025-03-31 15:12:26
22371
1
原创 VS2019+Mitk+cmake编译运行MitkWorkbench
3.localep(压缩包在线获取,记得挂梯子)cmake双层编译,然后在vs中生成。1.github拿到源码mitk。2.建同级文件(防止污染)
2025-02-19 15:55:01
319
原创 VS无法补全代码(以C++为例)
2.打开文本编辑器,C/C++里面的高级。将禁用IntelliSense改成False,就有代码提示了。1.点击工具,打开选项。
2025-02-19 15:14:58
271
转载 VS2019出现“有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”的问题解决方法
最近做项目使用VS2019时,在工程文件的开头出现一个错误 “有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”,如下图所示。
2025-02-17 15:11:47
375
原创 UI样式表(悬停hover状态样式和按下pressed)
按下状态:文本被压下去的动态效果。,背景色,边框,边角,文本颜色。悬停状态:浅蓝色,其他的不变。
2025-01-20 15:35:10
424
原创 VS中出现C2001 常量中有换行符
2.多个文件出现这类问题,可以将项目文件夹压缩,然后打开Windows设置里的时间和语言,将如图去掉勾选,然后再将压缩包解压,重新编译即可。1.对于少量文件出现常量中有换行符问题,单个文件通过Notepad++打开,将编码改成ANSI编码。
2025-01-20 14:07:49
654
原创 vs有中文乱码
1.少许文件乱码,可以通过nodepad++打开编码栏改成成ansi码,保存后vs重新编译文件。对于win10,点击设置-》时间和语言-》语言-》右上角管理语言设置-》更改系统区域设置。2.微软自带的是uft-8,可以在编译之前,确定windows系统的勾选去掉。
2025-01-15 18:53:03
400
原创 cmake gui与VS的使用
如果没有安装,可以从CMake官网下载并安装。如果在配置过程中 CMake 找不到某些库或依赖项,可以通过在 cmake-gui 中添加 CMake 变量来手动指定路径或标志。这样,你就可以使用 cmake-gui 为 Visual Studio 生成项目,并在 Visual Studio 中进行开发了。如果配置成功并且没有错误,点击 Generate 按钮,CMake 将开始生成 Visual Studio 项目文件。在其他操作系统上,你可以通过命令行启动 cmake-gui,如果 GUI 组件已安装。
2025-01-06 00:13:34
784
原创 git的安装看一篇就够了
2.根据上面的官方链接进入git官网,点击download。9.最后切换到桌面,右击鼠标,看到一下图标显示安装成功。1.查看电脑操作系统,对应下载相应的git安装包。3.因为我电脑是64位,下载对应的64位。4.git下载完,准备安装,点击next。8.安装成功,显示这个界面,点击完成。注:git下载官网:。7.接下来都是默认下一步next。6.默认下一步,next。
2025-01-05 23:44:39
384
原创 VS2022调试(官方)
断点指示 Visual Studio 应在哪个位置挂起你的运行代码,以使你可以查看变量的值或内存的行为,或确定代码的分支是否运行。变量上设置好了监视,当你在调试器中移动时,可看到其值发生变化。例如,你可将断点插入到指定的函数中,使用“运行到光标处”推进调试器,然后检查源代码。大多数情况下,我们使用键盘快捷方式,因为这是在调试器中快速执行应用的好方法(括号中显示了等效的命令,如菜单命令)。通常情况下,在调试时,需要快速检查变量的属性值,以查看它们是否存储了你希望它们存储的值,可根据数据提示执行此操作。
2025-01-04 10:22:46
2482
原创 QT中MVC框架
是应用程序的可视化部分,负责展示数据,将Model维护的数据进行可视化呈现,并提供用户操作界面。是应用程序的数据模型部分,负责管理应用程序的数据,提供对数据的增删改查等操作。它是应用程序的核心部分,并与数据源进行通信,为架构中的其他组件(如视图和委托)提供了接口。是应用程序的控制器部分,负责接收和处理View层的用户操作并作出响应,同时还管理Model和View之间的通讯。它是Model和View之间的桥梁。,它通过将应用程序的业务逻辑、数据展示和用户交互分离开来,显著提高了代码的可维护性和可扩展性。
2024-12-30 18:50:41
353
原创 CustomPlot的使用步骤
(1)文件添加,网上下载customplot的c文件和h文件,放入同级文件夹里。(3)打开项目中,项目中添加以下文件。添加方式“右键”导入。(4)头文件包含customplot.h。然后可以根据自己的需求进行功能开发。(2)pro文件中加入以下程序。
2024-12-30 10:12:27
321
原创 函数传递(值传递、指针传递、引用传递)
在C++中,有三种主要的函数参数传递方式:值传递、指针传递和引用传递。当我们将一个值传递给函数时,函数会创建该值的副本,并在函数内部使用这个副本。这是因为引用传递允许函数直接访问和修改原始值,使得代码更加简洁和易读。这是因为在值传递中,函数会创建参数的副本,而不是直接修改原始值。函数可以通过引用直接访问和修改原始值,而无需创建副本。在函数内部,我们可以直接修改原始值,而无需使用指针或副本。在函数内部,我们通过解引用指针来修改原始值。1.当函数需要修改原始值时,指针传递是一个不错的选择。
2024-10-15 15:55:42
596
原创 线程同步方式
线程同步是指协调多个线程的执行顺序以及访问共享资源的方式,以避免出现竞争条件(Race Condition)和数据不一致性等问题。- 互斥锁是最常用的线程同步机制之一,通过对共享资源加锁来确保同时只有一个线程可以访问共享资源。- 信号量是一种更广泛的线程同步工具,除了互斥作用外,还可以控制多个线程同时访问共享资源的数量。- 信号量可以是计数信号量(允许多个线程同时访问)或二进制信号量(只允许一个线程访问)。- 通常与互斥锁一起使用,等待线程在检查条件时会释放锁,当条件满足时,唤醒等待线程。
2024-03-05 13:56:03
597
原创 虚函数和纯虚函数
在 C++ 中,虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)是面向对象编程中的重要概念,用于实现多态性和抽象类。- 包含纯虚函数的类称为抽象类(Abstract Class),不能被实例化,只能作为基类来派生其他类。- 虚函数是在基类中声明为虚拟的成员函数,可以被子类重写。- 纯虚函数是在基类中声明为纯虚拟的虚函数,没有具体的实现,在基类中只有声明,不需要定义函数体。- 使用纯虚函数可以定义抽象接口,强制派生类实现特定的函数,实现接口的统一规范。
2024-03-05 13:33:01
312
原创 C++之析构函数
在 C++ 中,析构函数(Destructor)是一个特殊的成员函数,用于在对象生命周期结束时执行清理工作和资源释放。析构函数的名称与类名相同,前面加上波浪号(~),不接受任何参数,也没有返回类型。在上面的示例中,当对象 `obj1` 和 `obj2` 超出作用域时,析构函数会被自动调用,输出相应的信息。这样可以确保在对象销毁时进行必要的清理工作,比如释放动态分配的内存、关闭文件等。需要注意的是,C++ 中如果一个类有指针成员或者需要手动管理资源,那么最好显式地定义析构函数来确保资源的正确释放。
2024-03-05 13:16:49
350
原创 ab二个字段都有索引,会导致索引失效吗?
1. 覆盖索引:如果其中一个索引是覆盖索引(Covering Index),即索引包含了查询所需的所有列,而另一个索引并不包含所有需要的列,数据库可能会选择使用覆盖索引而不使用第二个索引。3. 索引合并:有些数据库系统支持索引合并(Index Merge),即在某些情况下会将多个单列索引合并使用,但并非所有数据库都支持这种特性。当两个字段都有各自的索引时,一般情况下不会导致索引失效。在大多数情况下,如果两个字段都有索引,数据库系统会根据查询条件和统计信息来选择最优的索引来加速查询,而不会导致索引失效。
2024-03-05 13:10:34
443
原创 什么情况下导致索引失效
索引在数据库中起着加快数据检索速度的作用,但在某些情况下,索引可能会失效,即数据库系统无法有效地使用索引来加速查询。- 当查询条件中未使用索引列,或者对索引列进行了函数操作、类型转换等,数据库无法有效使用索引。- 如果索引列上的数据分布不均匀,某些值的重复率很高,数据库可能会放弃使用索引而进行全表扫描。= 等),会导致索引失效。- 当查询条件中的数据类型与索引列的数据类型不匹配时,索引也可能无法被使用。- 在多表连接查询中,如果连接条件的列没有索引,可能会导致索引失效。
2024-03-05 13:06:44
1134
原创 聚集索引和非聚集索引区别
总的来说,聚集索引将数据行存储在索引的叶子节点中,减少了数据检索时的IO操作,可以提高查询性能;而非聚集索引只存储索引值和指向数据行的指针,需要额外的IO操作来获取数据行,但可以加速多种不同列的查询。- 聚集索引的叶子节点存储了表中的实际数据行,而不只是索引值。换句话说,表的物理顺序和聚集索引的顺序是一致的。- 非聚集索引的叶子节点存储的是索引字段的值以及指向实际数据行的指针。即索引值和数据行是分开存储的。- 当按照聚集索引的列进行查询时,数据库引擎会按照索引的顺序直接定位到数据行,提高查询效率。
2024-03-05 12:59:00
751
原创 MySQL主键索引的特点
3. **默认聚集索引**:在 InnoDB 存储引擎中,主键索引默认是聚集索引。5. **隐式约束**:主键索引在逻辑上也是一种约束,确保数据的完整性和一致性。7. **自动生成**:主键可以手动指定也可以自动生成。1. **唯一性**:主键索引要求列的值必须是唯一的,即该索引列中的每个值必须是唯一的,不允许重复值出现。4. **快速查找**:通过主键索引可以快速定位到表中唯一的一条记录,加快数据检索的速度。2. **非空性**:主键索引列的值不能为 NULL,确保每行数据都有一个唯一的标诋符。
2024-03-05 12:50:59
357
原创 与缓存相关的状态码
当客户端向服务器发送带有条件的 GET 请求(通常是包含 If-Modified-Since 或 If-None-Match 头部的请求),并且资源未发生变化时,服务器会返回状态码 304 Not Modified。这表示客户端缓存的版本仍然有效,无需重新获取资源,可以直接使用缓存。在缓存相关的情境下,404 状态码表示客户端缓存中的资源已经过期或不存在,需要从服务器重新获取。这些状态码是与缓存相关的一些常见情况,在处理缓存时需要根据不同的状态码来决定是否使用缓存、更新缓存或者从服务器重新获取资源。
2024-03-05 12:48:55
581
原创 http状态码,302,400
状态码 400 表示客户端发出的请求有错误,服务器无法理解。这通常是由于客户端发送的请求中包含无效的请求参数、格式不正确等问题导致的。客户端收到 400 状态码后,应该检查请求的格式和内容,进行修正后重新发送请求。服务器返回状态码 302 时,意味着所请求的资源已经被临时移动到另一个位置。客户端接收到该状态码后,会根据响应头中的 Location 字段指定的新 URL 发起新的请求。HTTP 状态码是指在 HTTP 协议通信过程中,服务器向客户端返回的状态码,用于表示服务器对请求的处理结果。
2024-03-05 12:39:57
1122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅