一般的桌面应用基本都会有两个窗口,登录窗口和主程序窗口,比如像微信,飞书等等都是。用Qt Quickk开发应用,有时就会遇到当电脑存在扩展屏幕时,登录弹窗和主窗体显示不在同一屏幕上,给人一种不够专业的体验,怎么办呢?
更严重的时,如果两个屏幕的显示比例(一个100%,一个150%)不一致时,效果就很奇怪了
正常而言,qml 中以rootItem 来使用window {} 时,当前光标在那个屏幕,窗口就会显示到哪个屏幕上,但如果以loader {} 加载Component{}的方式,例如:
这种方式,window{} 会以设备的主显示器为其screen,所获取的显示比例也是主显示器的,但该窗口却是展现在光标所在的屏幕上,如果主屏幕的显示比例为150%,而光标所在的屏幕显示比例为100%,这个时候,该windows的大小为其基本大小(100%),但一拖动,就会变成其原来大小的150%……
也行Loader本身就这么设计的吧,无所谓了
解决方案就是Windows{} 的screen属性:
具体代码如下:
该实例中,loader加载的是登录窗口, window.screen指的是rootItem的屏幕实例
这样一来,登录弹窗与主窗体就能保持在同一个屏幕上,大小显示也不会有问题