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

《QDebug 2023年12月》

一、Qt Widgets 问题交流
1.
二、Qt Quick 问题交流
1.Q_REVISION 标记的信号槽或者 REVISION 标记的属性,在子类中访问

Q_REVISION 是 Qt 用来做版本控制的一个宏。以 QQuickWindow 为例,继承后去访问 REVISION 标记的 opacity 属性或者 Q_REVISION 标记的 closing 信号,会报错提示 is not available:

#include <QQuickWindow>class MyWindow : public QQuickWindow
{
public:using QQuickWindow::QQuickWindow;
};
qmlRegisterType<MyWindow>("Test", 1, 0, "MyWindow");
import QtQuick 2.15
import Test 1.0MyWindow {width: 640height: 480visible: truetitle: qsTr("Test")opacity: 0.5onClosing: console.log("close")
}

 只需要用 qmlRegisterRevision 把基类也注册下,并指定一个更大的 VERSION 号就行了。

qmlRegisterType<MyWindow>("Test", 1, 0, "MyWindow");
qmlRegisterRevision<QQuickWindow, 15>("Test", 1, 0);
qmlRegisterRevision<QWindow, 15>("Test", 1, 0);

注意,如果基类有多层,把带 VERSION 属性的都注册下才行,比如 QWindow 是 QQuickWindow 父类也要注册下。

2.Qt5 点击按钮关闭子窗口时,按钮的 hovered 没有重置

给按钮加一个 ToolTip 关联 hovered 显示,子窗口 close 再 show,原来的 ToolTip 没有消失,鼠标晃一下才会消失,因为此时按钮的 hovered 没重置。

Qt5.15.2 测试 close 后再 show ToolTip 还在,hovered 未重置,但 hide 没问题;

Qt6.6.1 测试 close 没问题 hovered 已重置,但 hide 后再 show ToolTip 会闪一下。

测试代码:

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15Window {id: rootwidth: 640height: 480visible: truetitle: qsTr("Main Window")Window {id: windowwidth: 400height: 300visible: falsetitle: qsTr("Sub Window")Button {text: hovered ? "hovered" : "close"ToolTip.visible: hoveredToolTip.text: textonHoveredChanged: console.log("hoverd", hovered)onClicked: {console.log("clicked")window.close()}}onClosing: console.log("on closing")}Row {anchors.centerIn: parentButton {text: "show"onClicked: window.show()}}
}
三、其他
1.Windows 平台设置 Qt::FramelessWindowHint 无边框后,在副屏幕最大化时,自动切换为全屏把任务栏挡住了

Qt Bug Tracker:https://bugreports.qt.io/browse/QTBUG-51327

一般最大化时 Visibility 是 Maximized,但是无边框状态下自动切换为 FullScreen,会把任务栏挡住。根据 Qt Bug Tracker 上的记录来看,在  5.15.9, 6.3.0 Beta2, 6.4.0 Beta1 进行了修复。如果使用的是 Qt5.15 的低版本,可以编译高版本的 qwindows 插件替换下。

文件路径如:5.15.2\msvc2019\plugins\platforms\qwindows.dll 

2.Windows 平台设置 Qt::CustomizeWindowHint 自定义标题栏后,标题栏的位置会保留一个白条

FramelessWindowHint 去掉了标题栏和边框,CustomizeWindowHint 只去掉了标题栏,但是边框还在,如果能直接修改去掉标题栏残留的白条那比用 FramelessWindowHint 再做阴影方便点。

这个叫赵宇航的老哥提交了一个修复:https://codereview.qt-project.org/c/qt/qtbase/+/384712

http://www.lryc.cn/news/270820.html

相关文章:

  • sklearn 中matplotlib编制图表
  • 【Docker-Dev】Mac M2 搭建docker的redis环境
  • docker +gitee+ jenkins +maven项目 (一)
  • IDEA 开发中常用的快捷键
  • Ubuntu Desktop 死机处理
  • Hermite矩阵
  • HTML 实操试题(二)
  • MongoDB 面试题
  • LeetCode 1154. 一年中的第几天:2023年最后一道每日一题
  • 《深入理解JAVA虚拟机笔记》OutOfMemoryError 异常
  • R306指纹识别模块指令系统
  • redis的搭建及应用(三)-Redis主从配置
  • Java学习,一文掌握Java之SpringBoot框架学习文集(1)
  • javaWeb学生信息管理系统2
  • Linux Shell 019-文本行处理工具sed
  • Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷
  • 【leetcode】栈与队列总结
  • [EFI]HP Spectre 13 v102nl电脑 Hackintosh 黑苹果efi引导文件
  • 【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec
  • 【Kotlin 】协程
  • 用Xshell连接虚拟机的Ubuntu20.04系统记录。虚拟机Ubuntu无法上网。本机能ping通虚拟机,反之不能。互ping不通
  • 人机对话--关于意识机器
  • 八股文打卡day16——计算机网络(16)
  • Java Object浅克隆深克隆
  • 概率的 50 个具有挑战性的问题 [8/50]:完美的桥牌
  • 自动驾驶学习笔记(二十四)——车辆控制开发
  • 【起草】【第十二章】定制ChatGPT数字亲人
  • MySQL数据库索引
  • 【LLM 】7个基本的NLP模型,为ML应用程序赋能
  • 数字人私人定制