Qt

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