调用close后部分功能失效
当调用close()关闭窗口后,重新显示时标题栏将无法拖动,不知道是否是特性还是bug。 测试方式: 使用QWKExample_MainWindow项目进行测试 修改代码如下: MainWindow w; //w.show(); QPushButton button; QObject::connect(&button, &QPushButton::clicked, [&w] { w.show(); }); button.show(); return a.exec();
我的qt版本6.5.2 vs2022 经过测试 framelesshelper也存在相同的问题
这个问题在qt5上没有,应该是QWidget::close()的实现改了的缘故,给我点时间研究一下。
这个问题在qt5上没有,应该是QWidget::close()的实现改了的缘故,给我点时间研究一下。
好的,麻烦了
调用close后有些资源被Qt释放掉了,导致再次显示窗口会出现问题。不同Qt版本对close的实现不完全一样,所以导致版本不同,表现也不同。我本倾向于将这个问题归结为使用者没有正确使用QWK导致的,但 @SineStriker 决定在有时间时研究解决这个问题,所以就先不close这个issue了。
调用close后有些资源被Qt释放掉了,导致再次显示窗口会出现问题。不同Qt版本对close的实现不完全一样,所以导致版本不同,表现也不同。我本倾向于将这个问题归结为使用者没有正确使用QWK导致的,但 @SineStriker 决定在有时间时研究解决这个问题,所以就先不close这个issue了。
qt5版本和qt6版本的close()完全不同,已经完全重写了,qt6版本6.0和6.1由于编译失败无法测试,6.2及以上版本都会出现此问题,且鼠标点击坐标错位,我没有仔细比较qt6各个版本close()实现是否有太大差别,但我猜测是相同的原因造成的,可能可以对qt5和qt6在底层需要不同的实现。关闭后重新打开窗口是很常规的操作,例如关闭窗口后在托盘显示等。
关闭后重新打开窗口是很常规的操作,例如关闭窗口后在托盘显示等。
我自己的项目也有这种操作,但我都是hide而不是close。从逻辑上来讲,你需要再次显示出来的话,调用hide将窗口隐藏才更合理吧?
关闭后重新打开窗口是很常规的操作,例如关闭窗口后在托盘显示等。
我自己的项目也有这种操作,但我都是hide而不是close。从逻辑上来讲,你需要再次显示出来的话,调用hide将窗口隐藏才更合理吧?
如果调用hide的情况下当所有顶层窗口都关闭的情况下,事件循环无法退出,需要额外的操作判断。而且按照文档来看,普通的close()可以理解为等同于hide()
已经修复了,麻烦您试试最新一次提交。