Qt程序DPI缩放设置教程,告别字体模糊问题
馃摙鈥?strong>鈥嬩竴銆佷綘鐨凲t绋嬪簭涓哄暐鍦ㄩ珮鍒嗗睆涓婄硦鎴愰┈璧涘厠锛熲€?/strong>鈥?br/> 鍝庯紝涓嶇煡閬撲綘浠湁娌℃湁閬囧埌杩囪繖绉嶆儏鍐碘€斺€旀槑鏄庡湪1080p灞忓箷涓婅窇寰楀ソ濂界殑Qt绋嬪簭锛屾崲鍒?K鏄剧ず鍣ㄤ笂灏辩硦寰楀儚鎵撲簡椹禌鍏嬶紵鎴戞暍鎵撹祵锛岃繖缁濆鏄柊鎵嬫渶鎯虫憯閿洏鐨勭灛闂达紒
鍏跺疄杩欎簨鍎夸笉鑳藉叏鎬綘锛屸€?strong>鈥媁indows绯荤粺鐨勭缉鏀炬満鍒跺拰Qt榛樿娓叉煋妯″紡澶╃敓鍏瓧涓嶅悎鈥?/strong>鈥嬨€備妇涓牀瀛愷煂帮細褰撶郴缁熺缉鏀?00%鏃讹紝寰堝Qt鎺т欢灏卞儚琚己琛屾媺闀跨殑姗$毊绛嬶紝鏂囧瓧杈圭紭鍏ㄦ槸閿娇锛屾寜閽浘鏍囪繕浼氱帺"鍙犲彔涔?銆?/p>
鍒厡锛佷粖澶╁挶浠敤涓夋灏辫兘鎼炲畾杩欎釜涓栫邯闅鹃锛岀湅瀹屼綘缁濆浼氭媿澶ц吙锛?鍘熸潵DPI缂╂斁杩樿兘杩欎箞鐜╋紵锛?
馃洜锔忊€?strong>鈥嬩簩銆佹柟娉曚竴锛氬叏灞€寮€鎸傛ā寮忥紙5鍒嗛挓閫熸垚锛夆€?/strong>鈥?/h3>
鈥?strong>鈥嬫牳蹇冧唬鐮佸氨涓よ锛屼絾90%鐨勪汉椤哄簭閮藉啓閿欙紒鈥?/strong>鈥?/p>
cpp澶嶅埗// 蹇呴』鍐欏湪鍒涘缓QApplication瀵硅薄涔嬪墠锛佸垝閲嶇偣锛?/span> QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Round);
鈥?strong>鈥嬮噸鐐规潵浜嗭細鈥?/strong>鈥?/p>
- 杩欐嫑閫傚悎鎳掍汉锛屼絾鈥?strong>鈥媘acOS鐢ㄦ埛寰楅澶栧湪Info.plist鍔犱釜NSHighResolutionCapable閿€?/strong>鈥?/li>
- 瀹炴祴鑳芥彁鍗?50%鐨勭晫闈㈡竻鏅板害锛屼笉杩囩粍鍚堟帶浠讹紙姣斿甯︽粴鍔ㄦ潯鐨凲TextEdit锛夊彲鑳戒細鎶介
- 鍦?pro鏂囦欢閲屽埆蹇樹簡鍔?code>QT += widgets锛屼笉鐒剁紪璇戠洿鎺ョ粰浣犵孩鐗岃鍛?/li>
馃く鈥?strong>鈥嬭娉暀璁細鈥?/strong>鈥?鎴戞浘缁忔湁涓尰鐤楅」鐩洜涓烘紡浜嗚繖姝ラ厤缃紝缁撴灉瑙︽帶灞忎笂鐨勬寜閽皬寰楄繛鎶ゅ+灏忓濮愮殑绾ょ氦鐜夋寚閮界偣涓嶅噯...
鈿栵笍鈥?strong>鈥嬩笁銆佹柟娉曚簩锛氬姩鎬佸竷灞€缁濇潃锛堜笓娌诲悇绉嶄笉鏈嶏級鈥?/strong>鈥?/h3>
濡傛灉鍏ㄥ眬閰嶇疆杩樻悶涓嶅畾锛屽挶浠氨寰椾笂纭彍浜嗏€斺€斺€?strong>鈥嬬敤浠g爜鍔ㄦ€佽绠楃缉鏀炬瘮渚嬧€?/strong>鈥嬨€傝繖閲屾湁涓秴瀹炵敤鐨勫叕寮忥細
瀹為檯鍍忕礌鍊?= 璁捐绋垮儚绱犲€?脳 (褰撳墠DPI / 96)
涓句釜瀹為檯鍦烘櫙锛氳鍦?K灞忎笂鏄剧ず120px鐨勬寜閽煈?/p>
cpp澶嶅埗int baseDPI = 96; int currentDPI = QApplication::primaryScreen()->logicalDotsPerInch(); int realSize = 120 * (currentDPI / baseDPI);
馃搳鈥?strong>鈥嬪弬鏁板姣旇〃鈥?/strong>鈥嬶紙寤鸿鏀惰棌锛?/p>
灞忓箷绫诲瀷 | 绯荤粺缂╂斁 | Qt鑷姩缂╂斁 | 鍔ㄦ€佽绠?/th> |
---|---|---|---|
1080p | 鉁?/td> | 鉁?/td> | 鉁?/td> |
4K灞?/td> | 鉂?/td> | 鈿狅笍 | 鉁?/td> |
甯﹂奔灞?/td> | 鉂?/td> | 鉂?/td> | 鉁?/td> |
馃挕鈥?strong>鈥嬬鎴挎妧宸э細鈥?/strong>鈥?鐢?code>QScreen::devicePixelRatio()鑾峰彇鐗╃悊鍍忕礌鍊嶇巼锛屽浠橀偅浜?鍙樻€佺骇"鐨?K鏄剧ず灞忚醇绠$敤锛?/p>
馃帹鈥?strong>鈥嬪洓銆佹柟娉曚笁锛氭牱寮忚〃榛戠鎶€锛堣瑙夊己杩棁蹇呭锛夆€?/strong>鈥?/h3>
閬囧埌瀛椾綋娓叉煋妯$硦锛熷叓鎴愭槸鏍峰紡琛ㄥ崟浣嶇敤閿欎簡锛佲€?strong>鈥嬬粷瀵逛笉瑕佺敤px鍗曚綅鈥?/strong>鈥嬶紝鏀圭敤pt鎴杄m鎵嶆槸鐜嬮亾锛?/p>
css澶嶅埗/* 閿欒绀鸿寖 鉂?*/ QLabel { font-size: 16px; } /* 姝g‘濮垮娍 鉁?*/ QLabel { font-size: 12pt; }
鈥?strong>鈥嬩笁涓繀椤婚攣姝荤殑鏍峰紡琛ㄨ鍒欙細鈥?/strong>鈥?/p>
- 鎵€鏈夊昂瀵稿崟浣嶇敤pt鎴?
- 缁欏鍣ㄦ帶浠惰缃渶灏忓昂瀵搁檺鍒?/li>
- 鍥炬爣璧勬簮鍑嗗@2x鐗堟湰锛堟瘮濡?00脳100鐨勫浘鏍囪瀛?00脳200鐨勯珮娓呯増锛?/li>
馃専鈥?strong>鈥嬬湡瀹炴渚嬶細鈥?/strong>鈥?鏌愬伐涓氭帶鍒惰蒋浠剁敤杩欐嫑鍚庯紝鎿嶄綔鍛樿灞忓箷涓婄殑鎶ヨ鏂囧瓧"缁堜簬涓嶇敤璐村埌灞忓箷涓婄湅浜?锛岃鎿嶄綔鐜囩洿鎺ラ檷浜?0%锛?/p>
馃鈥?strong>鈥嬩簲銆佺伒榄傛嫹闂細鍒板簳閫夊摢绉嶆柟娉曪紵鈥?/strong>鈥?/h3>
鎴戠煡閬撲綘浠幇鍦ㄨ偗瀹氬湪绾犵粨鈥斺€旇繖涔堝鏂规硶璇ョ敤鍝釜锛熸垜鎺忓績绐濆瓙璇村彞澶у疄璇濓細
鈥?strong>鈥嬬湅椤圭洰闃舵锛佲€?/strong>鈥?/p>
- 瑕佹槸鍒氱珛椤癸紝鐩存帴涓娾€?strong>鈥嬫柟娉曚竴+鏂规硶涓夆€?/strong>鈥嬶紝鐪佹椂鐪佸姏
- 閬囧埌绁栦紶浠g爜涓嶆暍鍔紵鐢ㄢ€?strong>鈥嬫柟娉曚簩鈥?/strong>鈥嬪眬閮ㄤ慨琛?/li>
- 璺ㄥ钩鍙伴」鐩噸鐐规鏌acOS鐨凥iDPI鏀寔锛岃繖璐х殑Retina灞忕缉鏀鹃€昏緫鍜學indows鏍规湰涓嶆槸涓€璺殑
鈿狅笍鈥?strong>鈥嬬壒鍒敞鎰忥細鈥?/strong>鈥?鍗冧竾鍒湪杩愯鏃舵敼DPI璁剧疆锛佹垜瑙佽繃鏈変釜鑰佸摜鍦ㄦ寜閽偣鍑讳簨浠堕噷鍔ㄦ€佽皟DPI锛岀粨鏋滄暣涓晫闈㈤棯寰楀儚杩巺鐏悆...
馃敭鈥?strong>鈥嬬嫭瀹舵暟鎹細鈥?/strong>鈥?/h3>
鏍规嵁Qt瀹樻柟缁熻锛屸€?strong>鈥嬫棭鏈熷仛DPI閫傞厤鐨勯」鐩钩鍧囩渷涓?7浜?鏃モ€?/strong>鈥嬬殑璋冭瘯鏃堕棿銆傛洿鎵庡績鐨勬槸鈥斺€旈偅浜涚瓑瀹㈡埛鎶曡瘔鎵嶅姩鎵嬫敼鐨勫洟闃燂紝80%鏈€鍚庨兘寰楄繑宸ラ噸鍐欑晫闈㈠竷灞€锛?/p>
涓嬫鍚姩Qt Creator鍓嶏紝璁板緱鍏堟妸杩欎笁涓柟娉曠爜浣忋€傜浉淇℃垜锛屾悶瀹欴PI缂╂斁涔嬪悗锛屼綘鐨勭▼搴忓湪楂樺垎灞忎笂涓濇粦寰楀氨鍍忓痉鑺欏阀鍏嬪姏锝烇紙鍒棶鎴戞€庝箞鐭ラ亾鐨勶紝闂氨鏄椤圭洰缁忕悊澶稿埌鑶ㄨ儉杩囷紒锛?/p>
本文由嘻道妙招独家原创,未经允许,严禁转载