-
对 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 来解决。
基隆市网站建设_网站建设公司_SEO优化_seo优化
!!! 禁止转载 !!! 如果需要你可以添加引用或链接。
理由:我认为由于恣意转载,现在国内的技术博客充斥着大量的重复内容,有些甚至是错误的,这不利于技术探索。