Qt获取屏幕DPI和分辨率

4 篇文章 0 订阅

DPI

1、 Qt+MSVC

	// Get desktop dc
	HDC desktopDc = GetDC(NULL);
	// Get native resolution
	float horizontalDPI = GetDeviceCaps(desktopDc, LOGPIXELSX);
	float verticalDPI = GetDeviceCaps(desktopDc, LOGPIXELSY);
	
	int dpi = (horizontalDPI + verticalDPI) / 2; 
	int fontsize = 4 * dpi / 72; //8pt 144dpi is 4px 
	fontsize = fontsize > 8 ? fontsize : 8;
	QFont MenuFont("SimHei", fontsize);
	QApplication::setFont(MenuFont); 

2、Qt+MinGW

#include <QPaintDevice>  
//逻辑DPI
	int horizontalDPI = logicalDpiX(); 
	int verticalDPI  = logicalDpiY();  
//物理DPI (和逻辑DPI不一定相同)
	int horizontalDPI = physicalDpiX(); 
	int verticalDPI  = physicalDpiY();   

3、分辨率

#include <QDesktopWidget>
    int currentScreenWidth = QApplication::desktop()->width();
    int currentScreenHeight = QApplication::desktop()->height(); 
//或者 
    QDesktopWidget* desktopWidget = QApplication::desktop();
    //获取可用桌面大小
    QRect deskRect = desktopWidget->availableGeometry();
    //获取设备屏幕大小
    QRect screenRect = desktopWidget->screenGeometry(); 
    screenX = screenRect.width();
    screenY = screenRect.height();  

Qt默认DPI是跟随系统的,Qt5.6之后,也可以人工控制

#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
   QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
    QApplication a(argc, argv);
    return a.exec();
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值