win高分屏下Qt程式的介面適配處理

2021-08-07 01:25:34 字數 1397 閱讀 7948

在高分屏的裝置內,如果程式沒有進行適配,那麼介面就會太小而看不清楚,而且系統顯示比例的縮放對程式也不生效。下面是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...