当前位置: 首页 > news >正文

Qt BUG 与解决方案合集(持续更新)

  • 对 Qt Creator 进行开启或关闭等操作时速度变得异常缓慢,观察任务管理器发现其在卡住时执行大量 I/O 读写,且存在巨量分页错误。

    解决方案:

    删除 QtCreator.ini 文件中异常的内容。(直接删除将导致项目历史记录和快捷键等配置信息丢失)

    详情参见 我是标同学 的文章。

  • 在 Qt Creator 11.0.2 中,QML 仿真层会警告使用的一些附加插件不兼容。这可能是因为 QML 仿真层查找插件文件的路径不正确,没有正确找到对应版本的 Qt 插件库;或者 QML 仿真层是基于其它版本 Qt 构建的,其不兼容。

  • 截止 Qt5.15.2,当 win10 系统设置区域格式为 '香港' 或 '澳门' 时,QDateTime.toString("yyyy-MM-dd HH:mm:ss") 将返回乱码。该问题无法通过重启程序和系统来解决,只能换用其它方式来输出格式化时间,示例:

    auto secs = QDateTime::currentSecsSinceEpoch();
    qDebug() << "secs:" << secs;QDateTime t = QDateTime::fromTime_t(secs);		 // , Qt::UTC
    qDebug() << t.toString("yyyy-MM-dd HH:mm:ss");   // 输出乱码
    t = QDateTime::fromSecsSinceEpoch(secs);		 // , Qt::UTC
    qDebug() << t.toString("yyyy-MM-dd HH:mm:ss");   // 输出乱码QLocale loc(QLocale::Chinese, QLocale::HongKong);
    qDebug() << loc.toString(QDateTime::currentDateTime(), "yyyy-MM-dd HH:mm:ss");   // 正常// 或t = QDateTime::fromSecsSinceEpoch(secs, Qt::UTC);QDate d = t.date();QTime tm = t.time();QString sTime = QString("%1-%2-%3 %4:%5:%6").arg(d.year(), 4, 10, QChar( '0')).arg(d.month(), 2, 10, QChar( 'O')).arg(d.day(), 2, 10, QChar( '0')).arg(tm.hour(), 2, 10, QChar( '0')).arg(tm.minute(), 2, 10, QChar( 'O')).arg(tm.second(), 2, 10, QChar( '0'));
    

    参见 QTBUG-74668

  • Qt 5.15.2 的 QSvgRenderer 对百分比数值的支持似乎不太好,对于如下 svg 图片:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 117 117" ><rect width="100%" height="100%" fill="#FFFFFF"/>
    </svg>
    

    Qt 将 rect 的大小解释为 100x100 而不是 117x117,这会导致显示黑边框。为此,我们不得不放弃百分比数值的用法。

  • QWidget::underMouse 在一些场景下会返回预期外的结果,如:鼠标下的组件自动隐藏/显示/移动时,underMouse 返回的结果并不会随之更新。当前可行的替代方案是:

    QPoint cursorPos = QCursor::pos();
    return m_pTitleWidget->rect().contains(m_pTitleWidget->mapFromGlobal(cursorPos));
    
  • Qt 5.15.3 之前的版本下多线程访问 QDateTime::toString 或 fromString 时 (访问 qcalendar),在 Debug 模式下会出现 byId[size_t(id)] == nullptr 错误,这是因为多线程同时创建了预期为单例的 QCalendarBackend 对象。

    对于该问题,我们可以通过创建 QCalendar 来初始化一个默认类型的 QCalendarBackend 单例对象来解决 (如果需要其它类型则需要指定相应类型)。

    参见: https://forum.qt.io/topic/120355/qdatetime-assert 和 https://codereview.qt-project.org/c/qt/qtbase/+/309673

  • 使用 MSVC++ 编译器时,可以通过指定如下参数来在 release 模式下生成 pdb 文件:

    # 生成 PDB 文件 #
    QMAKE_LFLAGS += /DEBUG
    
  • Qt 在绘制滑块时并不将区域限制在 progressBar 的圆角矩形区域中, 这会导致滑块到达边界时圆角失效:

    QProgressBar* progressBar = new QProgressBar();progressBar->setFixedSize(340, 6);progressBar->setFixedHeight(6);progressBar->setMaximum(0);progressBar->setStyleSheet("QProgressBar { border-radius: 3px; background: #4378FF; }""QProgressBar::chunk {""background: qlineargradient(x1 : 0, y1 : 0, x2 : 1, y2 : 0, stop : 0 rgba(0, 0, 0, 0), stop : 0.5 #00d1ff, stop:1 rgba(0, 0, 0, 0)); "// HACK: // Qt 在绘制滑块时并不将区域限制在 progressBar 的圆角矩形区域中, 这会导致滑块到达边界时圆角失效.// 因此, 我们选择收缩滑块高度以减轻圆角失效."border-radius: 2px;""border: 1px solid rgba(0,0,0,0);"  "}");
    
  • QTextDocument.addResource 不支持 windows 目录路径,如:D:\\image.png
    其表现的结果为:name 为【windows 目录路径】的 QTextImageFormat 不会在 QTextDocument.addResource 之后更新。

  • 使用 QSettings 访问注册表时必须向其构造函数传入最终要访问的注册表路径,且 format 必须为 QSettings::NativeFormat。
    其无法跨路径读取属性,甚至子级路径都不行
    例:

    QSettings settings("HKEY_CLASSES_ROOT\\HTTP\\shell\\open\\command", QSettings::NativeFormat);
    qDebug() << settings.value("Default").toString();
    
  • msvc-version.conf loaded but QMAKE_MSC_VER isn't set 错误: 如果是在切换编译器时出现该错误,那么可以通过删除构建目录下的 .qmake.stash 文件或新建 pro.user 来解决。

http://www.jsqmd.com/news/111506/

相关文章:

  • 手搓RPC框架系列(三):服务注册与发现、完整实现与测试
  • 2025雅思报班全攻略:6大红榜机构深度测评 3步避坑指南 - 品牌测评鉴赏家
  • Vector 日志采集工具学习与配置笔记
  • 区间最值与区间历史最值
  • 2025雅思一对一机构深度测评:如何选出高性价比提分方案? - 品牌测评鉴赏家
  • 雅思培训班怎么选?高分学员亲测推荐+避坑指南 - 品牌测评鉴赏家
  • 雅思报班不迷路!这些机构值得重点关注 - 品牌测评鉴赏家
  • CPU调度
  • 2025年雅思备考攻略:高性价比培训班深度测评与选择指南 - 品牌测评鉴赏家
  • 2025雅思封闭班培训机构全攻略:费用解析、口碑推荐与选课指南 - 品牌测评鉴赏家
  • go语言中flag包的使用
  • 北京雅思培训机构保姆级攻略:这些小众宝藏机构帮你精准提分 - 品牌测评鉴赏家
  • 雅思封闭班怎么选?这3家口碑黑马帮你避开踩坑套路 - 品牌测评鉴赏家
  • Claude Code架构解析
  • 2025年武汉做得好的光固化保护套设计哪家好,环氧酚醛/环氧玻璃钢/石墨烯涂料/无溶剂环氧涂料/光固化保护套门店有哪些 - 品牌推荐师
  • 2025 雅思培训机构怎么选?这 5 大核心指标帮你避坑 - 品牌测评鉴赏家
  • QMenu自定义阴影效果
  • Sentinel 全面详解笔记
  • WinCC 更新后无法连接 OPC UA 服务器
  • 解码Qt 视图窗口与多界面组件
  • 2025 最新活性叶酸品牌 TOP9 评测!国内优质源头厂商权威榜单发布,科学赋能构筑健康生态 - 全局中转站
  • 2025年激光投影机技术白皮书与主流机型选购推荐,16000流明投影机/12000流明投影机/8000流明投生产厂家推荐 - 品牌推荐师
  • 软件工程学习日志2025.12.18
  • 12/18
  • 实际项目中TensorFlow/Keras模型优化落地指南
  • Linux提取
  • Level 5 → Level 6
  • MyBatis的TypeHandler :优雅地建立内容加密与解密
  • MyBatis的TypeHandler :优雅地建立内容加密与解密
  • 2025年合肥做得好的无溶剂环氧涂料批发排行榜,石墨烯涂料/光固化保护套/环氧玻璃钢/无溶剂环氧涂料/无溶剂环氧涂料定制怎么选择 - 品牌推荐师