简 述: 创建的 Qt QKeySequenceEdit 快捷键编辑框,显示方块■◆乱码。

[TOC]

本文初发于 “偕臧的小站“,同步转载于此。


分析

  💻 win10 21H2 📎 Qt 5.12.11 📎 Visual Studio 2019

  产生口字的方块乱码原因,通常是以 UTF-8 方式读取 GBK 编码的中文。对于此类编码问题,我早已没有问题。故,且再次检验过所有编码相关,根本不是我的原因:很明显,是 new QKeySequenceEdit() 出现了问题。


PS: 如果不懂乱码原因和如何解决,请参考如下 QtExamples 的第六部分章节,摘取其中两篇:极简和根因探究


解决

  最后发现是因为混用了,导致的

new QKeySequence(Qt::CTRL + Qt::Key_Shift + Qt::Key_Y)  // error 混用了

正确的用法,参考 Qt Assistant

QKeySequence(QKeySequence::Print);
QKeySequence(tr("Ctrl+P"));                // "+" 的左右不能有 "空格"
QKeySequence(tr("Ctrl+p"));
QKeySequence(Qt::CTRL + Qt::Key_P);