Published onApril 4, 2024Qt6中不能使用搜狗输入法QtLinux本文解决了在 Ubuntu 上使用 Qt6 和 PySide6 时无法使用搜狗输入法的问题,通过拷贝并设置 libfcitxplatforminputcontextplugin-qt6.so 文件为可执行状态,修复了 QtCreator 和 PySide6 程序中的输入法问题。
Published onJuly 6, 2022QProcess 7z.exe 解压进度Qt通过 QProcess 结合 7z.exe 实现解压进度,在 Worker 线程中读取进度信息,利用相关信号处理解压过程,避免主界面卡顿。
Published onNovember 6, 2020Qt 正确的显示窗口WindowsQt文章主要讲 Qt 正确显示窗口,有多种展示情况及常见做法,如`widget->show(); widget->raise();`但存在窗口最小化后出不来等问题,给出`GraceShowWidget`函数代码可解决,测试无问题。
Published onOctober 15, 2020QTableWidget整行高亮去虚线,样式定制Qt文章介绍了 QTableWidget 整行高亮去虚线及样式定制方法。定义接口类存储 hovered 行和 split 行,表格绘制代理类实现 item 定制绘制,包括去掉焦点虚线框、hover 整行高亮等。table 具体应用结合两部分实现需求,通过 mouseMoveEvent 设 hovered 行,此分层方式灵活且易扩充功能。
Published onSeptember 22, 2020Qt json文件读写QtC/C++介绍 Qt 中 JSON 读写,提供便捷 C++ API。封装 json 字符串与 QVariantMap 转换函数。展示读取和写入 json 文件的代码,注意写入时需指定 utf8 编码,避免中文转换失败。
Published onSeptember 8, 2020qt.network.ssl QSslSocket Qt支持SSL httpsQtQt 的 qt.network.ssl 中 QSslSocket 支持 SSL https。使用 QNetworkAccessManager 类默认不支持 https 协议,需增加openssl动态库,且新版本和老版本所需库名不同,老为 libeay32.dll、ssleay32.dll,新为 libcrypto - 1_1.dll、libssl - 1_1.dll,可在 QtCreator 包中找。
Published onSeptember 3, 2020QtCharts使用QtC/C++介绍 QtCharts 使用,其在 Qt5.7 后包含,包含重要类如 QChart 等。给出 demo 截图及相关源码,包含 MyChart 类的定义和实现,用于展示图表等功能。
Published onJune 23, 2020QWidget QLabel没有响应keyEvent键盘事件Qt在 Qt 中,常通过重写虚函数实现按键事件。但 QWidget、QLabel 有时无法触发,可能被父窗口截获或无焦点。可通过鼠标点击和 tab 键获取焦点,像它们即使鼠标点上也无焦点,需设置焦点获取策略如 setFocusPolicy(Qt::StrongFocus),获取焦点才能响应按键事件。
Published onSeptember 27, 2019QNetworkAccessManager http请求Qt文章介绍使用 QNetworkAccessManager 发起 http 请求,列举 get、post(表单形式)、post 上传文件三种场景及代码,包括设置请求头、构建请求数据等,还给出完整的 HttpRequest 类代码及相关信号槽。
Published onMarch 27, 2019QSortFilterProxyModel排序不正确WindowsC/C++Qt客户端使用 QSortFilterProxyModel 时,频繁更新 model 致 table 行排序不正确。虽可手动调用 sort 及 invalidate,却在特定操作时会崩溃。可关 dynamicSortFilter 用 Timer 控制排序,通过相关函数控制触发间隔及在 model changed 槽函数启动 timer 来解决此问题。
Published onMarch 5, 2019Qt什么时候用activateWindowWindowsQtC/C++在 Qt 中,show 用于显示窗口,raise 可将窗口置于最前。但主窗口点击时子窗口可能遮挡,此时需用 activateWindow 和 raise 解决。show 显示窗口及子窗口,showNormal 恢复最大化或最小化窗口,raise 提升窗口,activateWindow 设置活动窗口并可与 raise 配合确保窗口置顶。
Published onOctober 15, 2018Qt 客户端应用程序多开要注意的问题C/C++QtWindowsQt 客户端多开需注意本地配置、进程名及全局信息。可通过 RunGuard 类保证同一程序仅运行一个进程,多开时要保证目录和进程名不同,若已有进程运行则打开其主窗口。
Published onSeptember 25, 2018Qt connect函数参数Qt ConnectionType的使用场景C/C++QtQt connect 函数的 Qt::ConnectionType 参数决定信号投递和槽函数执行方式。有 Auto、Direct、Queued、BlockingQueued、Unique 等值,分别对应不同线程下的信号槽处理情况,可根据需求选择使用。
Published onSeptember 3, 2018比较QKeyEvent和shortcut的按键信息C/C++Qt文章主要比较 QKeyEvent 和 shortcut 的按键信息,通过 setShortcut 给 button 设置快捷方式,用 QKeyEvent 的 modifiers 和 key 函数获取按键,将其转换为 QKeySequence 后与 shortcut 比较,经处理使格式一致,常见组合键判断没问题但不排除特殊情况。
Published onMarch 19, 2018bug修复,内存释放问题C/C++Qt遇到 C/C++ 和 Qt 中的内存释放问题,操作复杂时释放会崩溃。通过保存待删指针,10 秒空闲时销毁解决。代码中定义 DelayDestory 类,提供实例获取及删除操作方法,通过定时器控制删除时机。
Published onMarch 19, 2018bug修复,解决延迟搜索的问题C/C++Qt文章主要讲 C/C++ 和 Qt 中解决输入框搜索延迟问题。通过设置 200 毫秒输入间隔时间,利用 Timer 控制搜索,先停止再重新开始计时,还优化了 Timer 触发逻辑,避免用户快速输入时带来问题。
Published onMarch 9, 2018Qt自定义TooltipC/C++Qt文章介绍 Qt 自定义 Tooltip,从 QDialog 继承,设置无边框属性,鼠标点击其他处自动关闭及自动析构等操作。给出 tooltip.h 和 tooltip.cpp 源码,用法为 Tooltip::popup(QCursor::pos(), "hello")。
Published onJanuary 9, 2018QTableView多选C/C++Qt介绍了 QTableView 多选,需了解 setSelectionBehavior 和 setSelectionMode 接口。初始化后用特定代码达不到要求,需使用 select 接口的新用法,封装了 selectMulRows 方法实现多选。
Published onJanuary 5, 2018Qt回调到UI线程C/C++QtWindows桌面客户端主线程即 UI 线程,异步获取数据常在子线程,不能直接操作 UI。介绍两种将子线程数据抛到 UI 层处理的方法:一是调用和接收在一起,通过信号槽机制;二是调用和接收分开,用 signalDispatch 类以信号方式 emit 结果,可实现多个 UI 窗口数据同步。
Published onNovember 17, 2017API设计原则(上)C/C++Qt介绍 Qt API 设计原则,包括一致、易掌握、强大等特质,如极简、完备等。强调静态多态和基于属性的 API,举例说明好、差及值得斟酌的案例,还提及属性间关联处理及特殊值或重置方法等,有原文链接及译文稿。
Published onNovember 17, 2017API设计原则(中)C/C++Qt总结:介绍 C++相关 API 设计原则,如值与对象(指针 vs 引用等)、虚函数(避免过度使用等)、关于 const(输入参数、返回值等方面),并提及 Qt 中的实践及相关注意事项,还对比不同情况下的选择。
Published onNovember 17, 2017API设计原则(下)C/C++Qt总结:介绍 API 设计原则,包括语义文档、命名艺术、避免陷阱等方面,以 QProgressBar 等案例展示实际应用,强调抽象类等问题,还提及相关 Qt 类的改进,如去掉 QGLayoutIterator 等,原文链接为[API Design Principles – Qt Wiki](http://qt-project.org/wiki/API-Design-Principles)。
Published onSeptember 18, 2017Qt简单截屏QtC/C++介绍 Qt 简单截屏,通过鼠标操作实现。定义 GrabWidget 类,包含多种鼠标事件处理函数,如移动、按下、释放等,可保存截取的图片。主函数创建并显示 GrabWidget 实例。
Published onSeptember 18, 2017Qt重要特性QtC/C++Qt 是跨平台 C++开发框架,含丰富类库与工具。有事件循环、事件过滤,通过 QEventLoop 处理自发和已发事件。信号槽机制可松耦合通信,新语法有编译期检查等优点。还有元对象、隐式共享与 d-pointer 技术、布局管理(多种布局可组合)、内存管理(自动或延迟销毁)等重要特性。
Published onSeptember 18, 2017Qt只启动一个实例C/C++Qt文章介绍 Qt 实现只启动一个实例的方法,涉及进程间通信。给出三种方案,重点展示共享内存的实现代码,通过 QSharedMemory 和 QSystemSemaphore 保证原子操作,用法示例中用随机 GUID 作为标识。
Published onSeptember 14, 2017Qt解决:warning Z-order assignmentQt在 Qt 调整 UI 布局时易出现“Z-order assignment”警告,虽运行无问题但影响代码洁癖。解决办法是用文本编辑器打开 ui 文件,删除含警告的 zroder 行,重新编译后警告消失。
Published onJune 30, 2017qDebug日志写入本地文件C/C++Qt在 Qt 中,通过`qInstallMessageHandler(myMessageOutput)`在应用创建前设置日志处理函数。该函数根据不同类型输出带时间、文件、行号的日志,使用当天日期作为文件名,可指定打印文件,日志信息先输出到调试面板再写入文件。
Published onJune 13, 2017QLabel文本超出显示区域显示...C/C++Qt介绍了能让 QLabel 文本超出显示区域显示为“...”并带 tooltip 的 ElidedLabel 类。通过 paintEvent 处理文本绘制,超出则截断显示,且更新 elided 状态和 tooltip,代码包含类定义及实现。
Published onJune 13, 2017给QPushButton增加图标并且显示在文本右边C/C++Qt介绍了在 C/C++ 的 Qt 中,给 QPushButton 增加图标并显示在文本右边的方法。通过创建按钮、设置文本、图标及布局方向实现,如上述代码所示。
Published onJune 10, 2017Qt 大数据列表展示C/C++Qt介绍 Qt 大数据列表展示,用 QListWidget 等自定义子 widget 展示数据时易慢耗内存,原理是重用隐藏 widget 。组件有父 widget 和滚动条,基本方法有 showEvent 等,通过 m_widgets 缓存 widget ,重点是刷新数据到 widget ,文末有源码及展示效果。
Published onJune 10, 2017方形图片使用QLabel显示成圆形C/C++Qt介绍了方形图片用 QLabel 显示成圆形的代码。通过自定义的 MaskLabel 类,在 paintEvent 中设置绘图参数,用 QPainterPath 画椭圆作为裁剪路径,实现方形图片的圆形显示。
Published onJune 10, 2017Qt设置窗口标题和exe图标C/C++Qt文章介绍 Qt 设置窗口标题和 exe 图标,以工程名“joke”为例,给窗口标题设图简单,需创建 QApplication 和 Dialog 等,给 exe 设图需新建 joke.rc 并粘贴特定文本,加入 pro 文件,在 vs 中加入 rc 文件,执行 qmake 后构建即可。
Published onApril 25, 2017无法定位程序输入点strnlen于动态链接库msvcrt.dll上(Qt XP)C/C++WindowsQtQt 应用在 XP(sp3)系统出现“无法定位程序输入点 strnlen 于动态链接库 msvcrt.dll 上”错误,含 D3Dcompiler_47.dll 和 opengl32sw.dll。可移除前者用后者,或在 QApplication 实例化前加代码强制 XP 不使用前者,参考相关 Qt 文档。
Published onApril 25, 2017QWebEngineView支持XPQtQt 应用中 QWebEngineView 在 XP 上有问题,网页内容显示不出且 QtWebEngineProcess.exe 起不来。需下载 5.6.2 版本 Qt 源码编译该文件,用 vs2013 打开相应 project 并设置属性,编译后替换 Qt 自带的可在 XP 上运行。
Published onApril 2, 2017QtCharts源码编译安装WindowsC/C++QtQtCharts 提供易使用的图表组件,用 Qt Graphics View Framework 可轻松集成。需自行编译安装,步骤包括获取源代码、用 vs2015 x64 编译安装、安装帮助文档及编译运行 demo 程序,各步骤详细且可成功展示图表。
Published onMarch 23, 2017QComboBox+QCompleter实现搜索自动匹配Qt通过 QComboBox 和 QCompleter 实现搜索自动匹配。按 Ctrl+F 打开搜索框,初始化数据并设置匹配规则为 contains,打开后清空显示并设焦点,点击弹出按钮列表框有数据,可通过信号槽实现相关功能。
Published onMarch 17, 2017Qt自定义读取qss样式表C/C++Qt介绍 Qt 自定义读取 qss 样式表,一般用 qss 配置控件样式,特殊情况需代码控制。通过代码解析 qss 中的样式属性,提供 init、style、attr 等函数,示例展示了 qss 样式及初始化读取样式的过程。
Published onMarch 15, 2017QComboBox item文字重叠Qt2017 年 3 月 15 日的“QComboBox item 文字重叠”文章提到,给 QComboBox 设置行交替颜色后,相邻 item 文字会重叠,解决方法是在 Qt Designer 中把 comboBox 的字体点大小设为实际要展示的文字大小,如从默认 9 改为 12。
Published onFebruary 8, 2017Windows下使用VS2013编译Qt5.6源码WindowsQt介绍 Windows 下用 VS2013 编译 Qt5.6 源码的步骤,包括下载源码、安装相关工具、ICU 源码编译及环境变量设置等,还提及编译中常见问题及解决办法。
Published onFebruary 3, 2017Qt5.6支持高分辨率QtQt5.6 支持高分辨率,创建 QApplication 前加入特定代码即可。高分辨电脑需注意:别混用获取尺寸位置 API,nativeEvent 中 MSG 的 x,y 坐标需除以缩放比获取正确值。
Published onJanuary 1, 2017Qt自定义MessageBoxC/C++Qt总结:2017 年 1 月 1 日的“Qt 自定义 MessageBox”,需继承自 QDialog,通过 exec 显示窗口,done 关闭窗口并返回值,与 C/C++及 Qt 相关。