C Qt 高分屏處理心得

2021-09-12 07:46:00 字數 1394 閱讀 4240

首先自我介紹一下, 本人從事c++ qt方向的畫面開發,工作內容主要是im pc端相關,接下來和大家分享一些經驗之談,希望可以幫助到有需要的同學。

今天為大家分享的是c++ qt處理高分屏的一些心得。

在正文之前先為小白分享一些關於高分屏的知識,大神請自行略過…

dpi。即dots per inch,它表示每英吋的畫素點數。經常用來衡量高分屏。

以上. 高分屏即高dpi屏。

int main(int argc, char *ar**) 

重點2: qt5.6+ 版本可以使用

更多相關知識請檢視 qt官方高dpi文件.

在某些情況下,qt自帶的處理方式並不能滿足我們的實際需求,so 我們需要自己計算螢幕的dpi,當然qt也提供了相關的介面(qscreen::physicaldotsperinch)。

// 本**計算的是主屏的dpi 

// 獲取主屏

// 獲取dpi

qreal dpi = sreen->physicaldotsperinch();

當然如果不想也可以使用windows api 。

desktopdc = getdc(null); // 獲取螢幕

horizontaldpi = getdevicecaps(desktopdc, logpixelsx); // 橫向dpi

verticaldpi = getdevicecaps(desktopdc, logpixelsy); // 縱向dpi

在之前的一篇文章中我介紹了基於c++ qt的圓角頭像處理. 文章中雖然解決了圓角頭像問題,但是在高分屏下就會很模糊,下面我介紹一下如何解決這個問題。

首先我們利用上面第二點(根據實際需求計算螢幕dpi)中的方法獲取螢幕的dpi。

我們對螢幕進行乙個簡單的分類,分為普通屏、2k螢幕、3k屏、4k屏。

根據不同的類別的螢幕我們生成乙個n最終壓縮尺寸的。

比如我們想要使用2k屏展示乙個5050的,我比如我們想要使用2k屏展示乙個5050的,我們將生成一張100100(2*50) 的。

使用qpainter將描畫為乙個最終尺寸的。

// 獲取是幾k的屏

int qimage::dpi()

int dpi = qimage::instance().dpi();

// 載入

qpixmap pixmap = qimage::instance().loadpixmap(_imagepath, true, true, _radius * 2 * dpi);

if(!pixmap.isnull())

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

在高分屏的裝置內,如果程式沒有進行適配,那麼介面就會太小而看不清楚,而且系統顯示比例的縮放對程式也不生效。下面是qt程式介面顯示適配系統縮放的一種解決方法。首先,獲取windows系統的畫素密度,也就是dpi get desktop dc desktopdc getdc null get nativ...

thinkpad e540 8cd更換高分屏

一直忍受thinkpad e540 8cd的768低解析度,以及白屏等問題,之後在網上看到有人說8cd這款機器可以更換高分屏,就像一石激起了千層浪,忍不住奔騰的內心,開始了自己的改裝之旅。首先當然是在萬能的某寶開始陶東西,不多說,直接進入主題。硬體更換列表 1 加裝固態硬碟 2 更換螢幕的a b殼和...

C Qt的異常處理

我們寄希望使用異常這種方法,讓乙個函式發現自己無法處理的錯誤時丟擲異常或者做進一步處理。未使用異常處理機制的程式,當遇見無法處理的問題時可能會產生如下後果 程式自行終止 然後程式設計師開始漫長的找bug過程 返回乙個表示錯誤的值 很多系統函式都是這樣,例如malloc,記憶體不足,分配失敗,返回nu...