在高分屏的裝置內,如果程式沒有進行適配,那麼介面就會太小而看不清楚,而且系統顯示比例的縮放對程式也不生效。下面是qt程式介面顯示適配系統縮放的一種解決方法。
首先,獲取windows系統的畫素密度,也就是dpi
// get desktop dc
desktopdc = getdc(null);
// get native resolution
horizontaldpi = getdevicecaps(desktopdc, logpixelsx);
verticaldpi = getdevicecaps(desktopdc, logpixelsy);
horizontaldpi的返回值應該和verticaldpi的返回值是相同的。如果系統沒有設定縮放,則返回96,對應的是100%,其他對應值如下:
96 100%
120 125%
144 150%
192 200%
以上比例是系統預設提供的,如果是自定義比例,用獲取到的返回值除以96即可得到對應的顯示比例。
其次,定義比例獲取函式,返回縮放因子
const float default_dpi = 96.0;
float windpiscale()
測試程式具體應用如下:
1.簡易介面設計
**片段如下:
const static int fixedwidth = 320;
const static int fixedheight = 480;
const static int fontsize = 12;
const static int btnw = 120;
const static int btnh = 20;
void dialog::slot_chknewdpiset()
#btnwbtest").arg(fontsize*scale).arg(btnw*scale).arg(btnh*scale);
this->setstylesheet(qss);
}else
#btnwbtest").arg(fontsize).arg(btnw).arg(btnh);
this->setstylesheet(qss);}}
適配後效果如下:
其他介面資源的設定同理,選擇適當大小的資源,然後設定寬高時乘以縮放因子就好。
C 在高分屏上讓窗體程式忽略系統的顯示縮放
最近寫截圖軟體,在win7下執行很正常,但是在win10下擷取到的螢幕就變小了,圖示 文字都變大了。找了好久,才發現win10預設顯示縮放125 而win7預設是100 於是在網上找解決方案,基本上都是的 stathread static void main system.runtime.inter...
win7下QT5程式打包
pc端應用軟體程式的打包部署 本人親測,debug模式下的,對dll依賴多一點,但是沒有obj檔案,體積很大,乙個程式要100多兆,release模式下的打包會小很多,大概30多兆乙個程式,網上有另外一種方法可以減少體積,就是那個占用20兆的動態庫可以某種方式去掉.通常編譯生成 exe 應用程式不能...
Linux下Qt程式的打包發布
程式以test為例 這裡提供乙個指令碼將ldd列印出來的依賴庫複製到指定路徑 bin sh exe test 發布的程式名稱 des home hejianglin qtproject build test desktop release releasetest 你的路徑 deplist ldd e...