QT 获取系统屏幕分辨率

原文地址:http://blog.sina.com.cn/s/blog_83dddc170100sm24.html


1,在Windows下可以使用GetSystemMetrics(SM_CXSCREEN);GetSystemMetrics(SM_CYSCREEN)获取。  2,在Linux下可以使用XDisplayWidthXDisplayHeight()获取。
3,在QT中呢?很多人说是QApplication::desktop()->width();QApplication::desktop()->height();这个方法对于单显示器模式当然没有问题。但是对于多显示器,特别是使用了扩展桌面的就会有问题了。今天上午仔细看了QDesktopWidget的帮助,需要使用QApplication::desktop()->screenGeometry();这个函数有好几个重载的版本,意思都一样。该函数返回一个QRect,这个QRect的宽和高就是所在Screen的分辨率。获取方法如下:

void GetScreenInfo()
{
   QDesktopWidget* desktopWidget = QApplication::desktop();
   //获取可用桌面大小
   QRect deskRect =desktopWidget->availableGeometry();
   //获取设备屏幕大小
   QRect screenRect =desktopWidget->screenGeometry();

   g_nActScreenX = screenRect.width();
   g_nActScreenY = screenRect.height();
   //g_nActScreenX = deskRect.width();
   //g_nActScreenY = deskRect.height();

   //获取系统设置的屏幕个数(屏幕拷贝方式该值为1)
   g_nScreenCount = desktopWidget->screenCount();
}


说到这里,顺便标记以下多屏幕设置成拷贝方式时,获取的屏幕的个数是一个,只有设置成扩展时才返回多个。

打印屏幕分辨率和个数信息:

void printscreeninfo()

{
   QDesktopWidget *dwsktopwidget = QApplication::desktop();
   QRect deskrect =dwsktopwidget->availableGeometry();
   QRect screenrect =dwsktopwidget->screenGeometry();
   QDesktopWidget *dwsktopwidget = QApplication::desktop();
   QRect deskrect =dwsktopwidget->availableGeometry();
   QRect screenrect =dwsktopwidget->screenGeometry();
   int scrcount = dwsktopwidget->screenCount();
   qCritical("screenrect.w==%sn",qPrintable(QString::number(screenrect.width())));
   qCritical("screenrect.h==%sn",qPrintable(QString::number(screenrect.height())));
   qCritical("deskrect.w==%sn",qPrintable(QString::number(deskrect.width())));
   qCritical("deskrect.h==%sn",qPrintable(QString::number(deskrect.height())));
   qCritical("scrcount==%sn",qPrintable(QString::number(scrcount)));
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值