- 博客(41)
- 收藏
- 关注
原创 QT - 组播
Qt组播通信要求收发端口一致以确保数据传输。UDP组播机制要求发送方和接收方使用相同端口号,否则无法接收数据。关键点包括:使用正确的组播地址标识组播组;通过QUdpSocket绑定本地地址和端口;调用joinMulticastGroup加入组播组。这些步骤共同保证组播通信的正确实现。
2026-01-04 09:35:48
44
原创 QT - 遮罩层
摘要:本文展示了使用Qt框架实现遮罩弹窗功能的代码示例。通过MaskedWidget类创建半透明遮罩层,并在窗口大小变化时自动调整遮罩尺寸。Login类实现无边框弹窗,包含关闭按钮和透明背景。Index类作为主窗口,控制遮罩层和弹窗的显示/隐藏,通过信号槽机制实现交互。当用户点击特定区域时显示遮罩层和弹窗,点击关闭按钮时隐藏两者。代码采用现代C++和Qt特性,实现了美观的模态对话框效果。
2026-01-04 09:34:55
441
原创 在Qt中激活已运行的应用程序实例
本文介绍了使用Qt实现应用程序单例检测并激活已有实例的方法。通过QLocalServer和QLocalSocket实现进程间通信,当检测到已有实例运行时,新实例会发送"activate"命令并退出,已运行实例收到命令后会激活并前置窗口。文中详细展示了核心代码实现,包括服务器监听、命令处理、窗口激活等关键步骤,并提供了跨平台优化方案(Windows和macOS的特殊处理)以及错误处理机制。这种方法能有效防止多实例运行,同时提供良好的用户体验。
2026-01-03 08:47:25
664
原创 向QListWidgetItem中添加自定义数据
本文介绍了两种在Qt中使用QListWidgetItem存储自定义数据的方法。第一种方法通过setData()函数,使用Qt::UserRole及其增量来存储多个数据项(如ID、名称和路径),并通过data()函数读取;第二种方法同样利用setData()存储单个自定义数据,但更简洁地展示了基本用法。两种方法都通过QVariant类型实现数据的存储和读取,适用于需要为列表项附加额外信息的场景。使用时需注意Qt::UserRole是保留的最小角色值,自定义数据应使用大于该值的角色。
2026-01-03 08:46:20
336
原创 QT - 系统托盘
本文介绍了在Qt中使用QSystemTrayIcon类创建系统托盘菜单的方法。通过示例代码展示了如何创建托盘图标、添加菜单项("显示窗口"和"退出"),并实现点击事件处理。关键步骤包括:设置图标资源、创建菜单对象、添加动作项、连接信号槽处理点击事件,最后将菜单附加到托盘图标并显示。示例中还实现了左键单击托盘图标时显示/隐藏窗口的功能。需要开发者准备自己的图标资源替换示例中的路径。
2026-01-03 08:45:23
476
原创 QT - 事件过滤
摘要:这段代码展示了一个使用Qt框架实现模态对话框时过滤鼠标事件的方法。通过自定义ModalEventFilter类继承QObject并重写eventFilter函数,当isModal为true时拦截鼠标移动、点击和释放事件。主窗口安装此事件过滤器后,在弹窗打开时(setModal(true))能有效屏蔽主窗口的鼠标交互,实现模态对话框效果。核心逻辑是通过事件过滤器控制事件传递,简单高效地实现了模态窗口的交互限制功能。
2026-01-03 08:44:39
425
原创 设置QMessageBox样式不受其他样式影响
摘要:本文介绍了在Qt中设置QMessageBox样式独立性的几种方法。主要包括:1)使用Qt::Tool窗口类型;2)设置独立样式表;3)创建无父窗口的QMessageBox;4)通过QPalette和QFont定制外观。同时详细说明了如何创建警告类型的消息框,推荐使用QMessageBox::warning()静态方法,也提供了通过设置图标和类型的替代方案。文章强调样式表可以自定义外观但不改变内部逻辑,建议根据具体需求选择合适的方法,通常结合窗口类型和样式表效果最佳。
2026-01-03 08:43:32
663
原创 给PushButton设置Menu
Qt中移除PushButton的下拉箭头可以通过样式表实现。当给QPushButton设置菜单时,默认会显示右侧下拉箭头提示。要去除这个箭头,只需在样式表中将QPushButton::menu-indicator的image属性设为none即可。示例代码展示了如何创建一个带菜单的按钮,并通过setStyleSheet("QPushButton::menu-indicator{image:none;}")方法隐藏下拉箭头,保持按钮简洁外观。这种方法简单有效,不影响按钮的菜单功能。
2026-01-02 18:26:04
215
原创 获取QWidget中的元素
Qt中可通过对象树获取Widget元素。使用findChild()函数根据对象名递归查找子元素,如示例中通过"button"名称获取QPushButton。也可用children()获取子对象列表。对象树机制使得父子Widget间的查找操作变得便捷高效。
2026-01-02 18:25:51
338
原创 动态调用项目
本文介绍了在QtCreator中动态调用项目参考文件的步骤:1)创建主项目并添加子项目;2)准备待导入项目并复制到同级目录;3)删除被调用项目的main文件,创建.h文件定义全局宏和设置;4)主项目即可调用子项目头文件。该流程实现了项目间的动态调用和资源整合。
2026-01-02 09:24:22
525
原创 点PushButton切换页面
本文介绍了在Qt中使用信号和槽机制实现按钮切换页面的方法。通过QStackedWidget作为页面容器,创建多个页面并添加到堆栈中。为每个按钮设置点击信号,连接到setCurrentIndex槽函数,使点击不同按钮时切换到对应索引的页面。这种方法简洁高效,利用Qt的信号槽机制实现了页面切换功能。
2026-01-02 08:47:25
272
原创 创建DLL和使用DLL
本文介绍了DLL的创建与使用流程。首先通过参考文章说明DLL创建方法,展示创建后的效果图;接着为项目添加UI界面并设计测试案例;然后将生成的dllTest.dll文件放入lib目录,同时复制dlltest.h和dllTest_global.h头文件到include目录;最后进行测试验证。整个过程涵盖了从DLL开发到实际应用的关键步骤,包括文件组织、接口引用和功能测试等环节。
2026-01-01 16:44:32
339
原创 打开指定目录
本文介绍了两种在Qt中打开指定目录的方法。第一种方法使用QDesktopServices类,通过QUrl对象打开本地目录路径,并处理可能的失败情况。第二种方法(推荐)详细展示了如何正确转义路径字符,使用QUrl::fromLocalFile转换路径,并通过QDesktopServices::openUrl调用系统文件浏览器打开目录。两种方法都需要包含Qt核心模块和GUI模块,并注意路径中的反斜杠需要转义处理。示例代码清晰地演示了实现过程,适用于需要从Qt应用程序中打开系统目录的场景。
2026-01-01 16:26:49
523
原创 窗口保持在顶部
摘要:本文介绍了在Qt中实现点击任务栏缩略图时使弹窗置顶显示的方法。通过设置窗口标志Qt::WindowStaysOnTopHint和调用特定函数,可以让QDialog弹窗保持在其他窗口顶部。示例代码展示了如何创建置顶的模态对话框,但指出实际应用中可能需要更复杂的逻辑来处理操作系统级别的窗口管理问题。
2025-12-31 15:57:51
204
原创 避免重复打开外部程序
本文介绍了使用Qt实现应用程序检测并控制xx.exe启动的多种方案,包括: 基本跨平台实现:通过tasklist/pgrep命令检测进程 Windows优化版本:使用CreateToolhelp32Snapshot API 锁文件方案:通过QLockFile防止竞争条件 持续监控方案:定时检查进程状态 关键特性包括: 跨平台兼容性 双重验证机制 完善的错误处理 资源管理优化 可选的持续监控功能 实现后能有效防止重复启动目标程序,并提供清晰的用户反馈,适用于不同复杂度的应用场景。
2025-12-31 15:56:24
751
原创 setWindowFlags
摘要:该Qt代码通过setWindowFlags()设置了多个窗口标志:Qt::FramelessWindowHint移除边框和标题栏,Qt::Tool将窗口设为工具窗口,Qt::X11BypassWindowHint(仅X11有效)绕过窗口管理器控制,Qt::WindowStaysOnTopHint保持窗口置顶。组合这些标志可创建高度定制的无边框工具窗口,适用于特殊场景如游戏或监控工具。需注意X11BypassWindowManagerHint可能导致窗口行为异常,且仅适用于Linux/X11平台。
2025-12-30 14:54:21
383
原创 QT列表-QListWidget
本文介绍了在Qt中使用QListWidget实现应用图标列表的方法。通过设置图标模式、调整图标大小和间距,可以创建类似应用商店的界面效果。示例代码展示了如何添加带图标的列表项,并批量设置文字颜色。同时提供了去除滚动条、自定义样式等可选优化建议。对于更复杂的布局需求,建议使用QListView配合自定义模型和委托来实现。
2025-12-30 14:53:30
791
原创 QTabWidget
本文介绍了在Qt中获取QTabWidget当前激活标签页的方法。通过currentIndex()函数可获取标签页索引,使用currentWidget()函数可获得对应的QWidget对象。示例代码展示了如何创建含三个标签页的QTabWidget,并打印当前激活标签页的索引和名称。这两个函数是获取QTabWidget当前选中页面的常用方式。
2025-12-29 13:43:47
328
原创 QTableWidget
摘要:Qt中可通过QStackedWidget的indexOf()方法获取指定widget的索引。要获取所有widget索引,可以遍历count()返回的widget数量,逐个调用widget(i)获取每个widget,再使用indexOf()查询其索引。示例代码展示了如何打印所有widget的索引和指针信息,便于调试和管理QStackedWidget中的页面。
2025-12-29 13:42:30
920
原创 QPixmap调整图片大小
本文介绍了Qt中QPixmap的图片缩放方法。通过scaled()函数可实现图片大小调整,支持设置目标宽高和保持宽高比选项(Qt::KeepAspectRatio或Qt::IgnoreAspectRatio)。还提供了两种缩放模式选择:Qt::SmoothTransformation实现平滑缩放,Qt::FastTransformation进行快速缩放但可能失真。文中给出了具体的代码示例,演示如何加载图片并进行不同参数的缩放操作。
2025-12-28 13:10:49
390
原创 QListWidget
本文介绍了Qt中QListWidget的使用方法,包括基础设置和交互功能实现。主要内容包括: QListWidget基本配置:设置标题、图标模式、调整大小、间距、滚动条等属性 添加列表项:创建QListWidgetItem并设置图标、文本、提示信息和颜色 点击事件处理:通过itemClicked信号连接槽函数实现点击响应 右键菜单实现:两种方法展示如何为列表项添加上下文菜单 方法一:使用customContextMenuRequested信号 方法二:重写contextMenuEvent方法 菜单项功能实现
2025-12-28 13:10:10
437
原创 QLinearGradient
Qt中的qlineargradient用于创建线性渐变效果,可在样式表或代码中使用。样式表中通过定义起点(x1,y1)、终点(x2,y2)和颜色停靠点(stop)来设置渐变,如从红色到蓝色的背景渐变。代码中则使用QLinearGradient类,通过设置坐标和颜色点创建渐变,再用QBrush填充绘制。两种方式都能实现颜色平滑过渡,但代码方式更灵活可控。
2025-12-27 12:39:22
359
原创 Layout布局
摘要:本文介绍了在Qt中使用QVBoxLayout和QHBoxLayout进行布局管理的方法。对于QVBoxLayout,可以通过设置部件的最小/最大尺寸、大小策略和布局间距来控制垂直排列的部件大小;对于QHBoxLayout,使用setAlignment(Qt::AlignLeft)可实现水平左对齐。两种方法都支持通过setSpacing()调整部件间距,setContentsMargins()控制边距。这些技术可帮助开发者灵活控制界面布局,同时保持自适应特性。
2025-12-27 12:38:37
704
原创 JSON数据读写
在Qt中处理JSON格式数据,你可以使用QJsonDocument, QJsonObject, QJsonArray, QJsonValue等类。以下是一个简单的例子,展示如何读取和写入JSON数据。这个例子展示了如何创建一个JSON对象,将其写入到文件,然后从文件读取并解析JSON数据。根据实际需求,你可能需要添加更多的错误处理和类型检查。// 写入JSON数据。// 读取JSON数据。// 写入JSON数据到文件。// 读取JSON数据从文件。// 使用读取的数据。
2025-12-26 09:55:19
485
原创 QT-组播
具体来说,当发送方发送一个组播数据报时,它会将数据报发送到指定的组播地址和端口号。如果接收方的端口号与发送方的端口号不一致,那么接收方将无法接收到发送方发送的数据报。加入组播组:在Qt中,可以通过调用QUdpSocket类的joinMulticastGroup函数来将QUdpSocket加入指定的组播组。同时,还需要注意组播地址的选择、套接字的绑定以及加入组播组等步骤的正确性。这是因为UDP组播的工作原理要求发送方和接收方都使用相同的端口号来确保数据报能够正确传输和接收。在Qt中实现组播(多播)通信时,
2025-12-23 10:15:23
94
原创 QT-总览
由QT的QObject类派生出来的类,无需手动释放堆内存,添加到QObject或QObject派生类的对象,也无需手动释放。程序结束时,QT会自动检测对象树的对象,释放对象前先释放子对象,然后一层一层释放,最终释放最上层对象。[输入图片说明](%E7%BB%99ui%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0%E6%B7%BB%E5%8A%A0%E4%BF%A1%E5%8F%B7%E5%92%8C%E6%A7%BD%E6%AD%A5%E9%AA%A4%E4%BA%8C.jpg)
2025-12-23 10:09:35
444
原创 js 将数据保存到本地
/ 当你结束使用某个 URL 对象之后,应该通过调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了。// 释放一个之前已经存在的、通过调用 URL.createObjectURL() 创建的 URL 对象。// dada 表示要转换的字符串数据,type 表示要转换的数据格式。// const stringData = '一段文本'// 根据 blob生成 url链接。// 创建一个 a 标签Tag。// 给 a 标签添加点击事件。// 设置保存后的文件名称。// 设置文件的下载地址。
2025-12-22 08:53:15
306
原创 等间距从左向右布局
`grid-template-columns: repeat(auto-fill, minmax(76px, 1fr))`:自动填充列,每列最小宽度为 `76px`,最大宽度为 `1fr`(即平分剩余空间)。`grid` 布局更适合处理需要等间距排列的场景。通过设置列宽和间距,可以确保所有子项均匀分布。- `gap: 10px`:设置子项之间的间距。
2025-12-20 16:59:56
276
原创 通过复选框自定义菜单树实现级联效果
"><a-checkbox v-model="isSelectAllcheckbox">全选</a-checkbox></div>console.log('p====>val2', val2) //当前对象。console.log('c---1-->', val1) //当前数组。console.log('c---2-->', val2) //当前对象。console.log('c---3-->', val3) //父级。console.log('c---4-->', val4) //子集。
2025-12-19 09:03:40
614
原创 axios get方法传递数组会默认给数组的每个参数添加一个‘[]’,去掉方法
【代码】axios get方法传递数组会默认给数组的每个参数添加一个‘[]’,去掉方法。
2025-12-16 08:54:21
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅