Qt - 获取屏幕分辨率
欢迎转载,请注明出处:https://blog.csdn.net/qq_39453936?spm=1010.2135.3001.5343
原文链接: https://blog.csdn.net/qq_39453936/article/details/120665562
Windows下获取屏幕分辨率
- 获取多个显示屏幕的分辨率
- 获取主屏幕分辨率
- Qt获取多个屏幕分辨率
获取多个显示屏幕的分辨率
获取屏幕缩放后的逻辑分辨率
BOOL CALLBACK EnumMonitor(HMONITOR handle, HDC hdc, LPRECT rect, LPARAM param) {std::vector<MONITORINFO> *list = (std::vector<MONITORINFO>*)param;MONITORINFO mi;mi.cbSize = sizeof(mi);GetMonitorInfo(handle, &mi);qebug()<<"is MONITORINFOF_PRIMARY:" << mi.dwFlags;list->push_back(mi);return true; }int main(int argc, char *argv[]) {int numbers = GetSystemMetrics(SM_CMONITORS);std::vector<MONITORINFO> monitor_list;EnumDisplayMonitors(NULL, NULL, EnumMonitor, (LPARAM)&monitor_list);for (size_t i = 0; i < monitor_list.size(); ++i) {qebug()<<"width:"<<(monitor_list[i].rcMonitor.right - monitor_list[i].rcMonitor.left);qebug()<<"height:"<<(monitor_list[i].rcMonitor.bottom - monitor_list[i].rcMonitor.top);} }
获取当前屏幕的物理分辨率
RECT GetScreenRect(int screen) {DISPLAY_DEVICEW device;device.cb = sizeof(device);BOOL result = EnumDisplayDevicesW(NULL, screen, &device, 0);DEVMODEW device_mode;device_mode.dmSize = sizeof(device_mode);device_mode.dmDriverExtra = 0;result = EnumDisplaySettingsExW(device.DeviceName, ENUM_CURRENT_SETTINGS, &device_mode, 0);int x = device_mode.dmPosition.x;int y = device_mode.dmPosition.y;int width = device_mode.dmPelsWidth;int height = device_mode.dmPelsHeight;return { x, y, x + width, y + height }; }int main(int argc, char *argv[]) {int numbers = GetSystemMetrics(SM_CMONITORS);for (int i = 0; i < numbers; ++i) {auto size = GetScreenRect(i);qebug()<<"width:"<<(size.right - size.left);qebug()<<"height:"<<(size.bottom - size.top);} }
获取主屏幕分辨率
注意:需要在QApplication构造后调用
//获取屏幕缩放后的逻辑分辨率,也可以通过GetSystemMetrics(SM_CXSCREEN);GetSystemMetrics(SM_CYSCREEN) 获取auto hMonitor = MonitorFromWindow(GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);MONITORINFOEX miex;miex.cbSize = sizeof(miex);GetMonitorInfo(hMonitor, &miex);qreal cxLogical = (miex.rcMonitor.right - miex.rcMonitor.left);qreal cyLogical = (miex.rcMonitor.bottom - miex.rcMonitor.top);// 获取当前屏幕的物理分辨率DEVMODE dm;dm.dmSize = sizeof(dm);dm.dmDriverExtra = 0;EnumDisplaySettings(miex.szDevice, ENUM_CURRENT_SETTINGS, &dm);qreal cxPhysical = dm.dmPelsWidth;qreal cyPhysical = dm.dmPelsHeight;//获取缩放比例qreal xdpi = cxPhysical/cxLogical;qreal ydpi = cyPhysical/cyLogical;qreal dpi = (xdpi+ydpi)/2;
Qt获取多个屏幕分辨率
//获取可用桌面大小
QRect deskRect = QApplication::desktop()->availableGeometry();
//获取设备屏幕大小
QRect screenRect = QApplication::desktop()->screenGeometry();
//获取系统设置的屏幕个数(屏幕拷贝方式该值为1,只有设置成扩展时才返回多个)
int g_nScreenCount = desktopWidget->screenCount(); //获取该主机显示器列表(屏幕拷贝方式该值为1,只有设置成扩展时才返回多个)
QList<QScreen *> list_screen = QGuiApplication::screens();
for (int i = 0; i < list_screen.size(); i++)
{QRect rect = list_screen.at(i)->geometry();int desktop_width = rect.width();int desktop_height = rect.height();qDebug() << desktop_width <<desktop_height;
}
参考文章:https://blog.csdn.net/yp18792574062/article/details/88365965
小白发文,欢迎指正
Qt - 获取屏幕分辨率相关推荐
- Qt界面制作(QSS、获取屏幕分辨率、自定义控件、版权)
源码下载地址: https://download.csdn.net/download/qq78442761/10534055 程序运行截图: 程序版权 程序结构图如下: 主要就几点: 1.QSS 2. ...
- Android的单位px,pt,dp,sp总结和获取屏幕分辨率
px: pixels(像素). 是屏幕中可以显示的最小单位元素,px是设备密度有关的,不同设备显示效果不同.因为由于不同的设备密度不同,密度就是单位英寸的像素不同,在不同的手机上显示的大小就不同 pt ...
- C#获取屏幕分辨率(大小)
using System.Windows.Forms; 获取屏幕分辨率 int SH = Screen.PrimaryScreen.Bounds.Heig ...
- IOS获取屏幕分辨率
获取屏幕分辨率是个很有用的功能,尤其在一些游戏相关的开发中,图形的绘制与屏幕分辨率密不可分.得到当前屏幕的分辨率是必不可少的支持. 获取屏幕分辨率可以两步走 1.得到当前屏幕的尺寸: CGRect r ...
- Android手机获取屏幕分辨率高度因虚拟导航栏带来的问题
大家都知道,Android系统在4.4(KITKAT)版本后,增加了更炫的交互,并且对于标题栏和状态栏也增加了可定制化,于此同时在获取手机分辨率的时候一些旧方法已经不那么好使了. 常用获取屏幕分辨率的 ...
- MATLAB获取屏幕分辨率
1. 获取分辨率 本来设计程序按照1920x1080运行的,后面调了一下系统缩放,分辨率就变了,所以为了更灵活的使用,还是先获取再使用吧 matlab获取屏幕分辨率命令: get(0,'ScreenS ...
- Android kotlin工具类获取屏幕分辨率及宽高
前言 获取屏幕相关工具DisplayUtil class DisplayUtil {companion object {/*** 获取屏幕宽度*/fun getScreenWidth(context: ...
- 使用GTK+获取屏幕分辨率并设置满屏显示效果
在linux下,经常需要设置程序全屏显示,GTK+中提供了获取屏幕分辨率的方式,然后只要根据得到的宽高设置窗口显示大小,同时使用gtk_window_set_decorated去掉边框和标题栏显示,就 ...
- iphone中获取屏幕分辨率的方法
iphone中获取屏幕分辨率的方法 CGRect rect = [[UIScreen mainScreen] bounds]; CGSize size = rect.size; CGFloat wid ...
- c++获取屏幕分辨率DPI以及屏幕放缩倍数
c++获取屏幕分辨率DPI以及屏幕放缩倍数 参考示例 // 获取分辨率不准nScreenWidth = GetSystemMetrics(SM_CXSCREEN);nScreenHeight = Ge ...
最新文章
- 【Network Security!】Banner信息收集
- Vue.js-Day05【安装路由(vue-router)、如何使用vue-router、404配置、激活class、动态路由、编程式导航、路由嵌套、路由元信息、导航拦截】
- boost::math::tools::cohen_acceleration用法的测试程序
- java main方法调用非静态方法_java中main函数怎么调用外部非static方法
- flink报错:typeutils.CompositeType$InvalidFieldReferenceException Cannot reference field by field expre
- python内存管理 变量_Python变量内存管理
- WebPager For ASP.NET (基于ASP.NET的数据分页控件)
- win10 计算机 权限,介绍电脑windows10管理员权限开启的4种方法
- Windows 完成端口编程
- Python3 - 苹果ID登录App Sign in with Apple
- 安卓系统目录说明大全,各文件夹是什么,可以删除吗?(以MIUI为例)
- OA实施分析:OA系统选型警惕哪些陷阱
- pyftpdlib 创建ftpserver
- linux每天凌晨备份文件
- 『python思考』关于列表的浅复制和深复制的理解
- Java开发教程入门!数据库事务深入分析
- python迭代器是什么_python中什么是迭代器
- 神经网络的三种训练方法,神经网络常用训练方法
- <<视觉问答>>2022:SwapMix: Diagnosing and Regularizingthe Over-Reliance on Visual Context in VQA
- ROS中执行roslaunch后,显示功能包不存在的解决方法