stdware / qwindowkit

Cross-platform frameless window framework for Qt. Support Windows, macOS, Linux.
Apache License 2.0
490 stars 78 forks source link

1920x1080屏幕下,设置qml窗口大小为1920x1080时,启动程序后屏幕左边会有几个像素的空白 #57

Closed blazewater-gmail closed 5 months ago

blazewater-gmail commented 6 months ago

相关qml设置如下:

ApplicationWindow {
    id: window
    visible: false // We hide it first, so we can move the window to our desired position silently.

    minimumHeight: 1080
    minimumWidth: 1920
    width: 1920
    height: 1080

屏幕大小:1920x1080 之前没有问题,打开程序后,程序窗口是靠紧屏幕左边的。 前几天更新代码库后,发现,程序启动后,屏幕左边会空白几个像素的空白,不确定是否是最近的代码更新造成的。 如下图(最左边边缘一条蓝色的是屏幕左边背景蓝色,请点开图片查看,看缩略图看不出来。): image

wangwenx190 commented 6 months ago

很难说,这期间qt版本有变过吗?

wangwenx190 commented 6 months ago

另外,你是否使用了系统的原生边框?还是选择了隐藏边框?

yanlusu commented 6 months ago

另外,你是否使用了系统的原生边框?还是选择了隐藏边框?

Qt版本一直是6.3.2,边框没有设置过,用的是example中的qml代码,这期间可以确定的是qml代码没有改动。

wangwenx190 commented 5 months ago

有没有最小复现工程?我用demo在win11上运行是正常的,不过由于Qt早期版本有bug,所以我没用你这个版本

blazewater-gmail commented 5 months ago

@wangwenx190 ,谢谢回复。 在Qt6.3.2下, git-bash: 已构建好的QWindowKit放在D:\develop\installed\QWindowKit-Qt632

cd FramelessWindowDemo
cmake -S demo -B build
cmake --build build

FramelessWindowDemo.zip

I have tried once, it's still existed.

SineStriker commented 5 months ago

请使用 Qt 6.6.2 试试

blazewater-gmail commented 5 months ago

请使用 Qt 6.6.2 试试 Qt的版本不太好更换,虽然我也想换,但是牵扯的太多了。 这里的问题是之前没有问题,最近的更新才出现的这个问题,所以可能不是Qt的bug导致的,是中间的修改导致的。

blazewater-gmail commented 5 months ago

我用原来2024年1月15日构建的QWindowKit重新编了一下demo,确认这个时间点的版本左边不会有空隙,但是顶部会超出屏幕。

SineStriker commented 5 months ago

因为 Qt 6.6 前在这方面有诸多缺陷,而且本仓库后续也应该会声明不再支持 Qt 6.6 前的 Qt 版本,所以还是建议试一试。

blazewater-gmail commented 5 months ago

在component的onCompleted里面用 windowAgent->centralize(); 规避了这个问题,先凑合着这样吧,哈。