QT应用编程: 界面自适应屏幕分辨率

举报
DS小龙哥 发表于 2021/12/10 01:11:52 2021/12/10
【摘要】 一、环境介绍 操作系统: win10 64位 QT版本:  QT5.12.6 编译器:  MinGW 32 二、实现代码 每次程序打开之后,根据当前屏幕分辩率进行计算缩放系数,然后设置界面上的控件尺寸,不管有没有使用布局器都可以设置。 /*******************...

一、环境介绍

操作系统: win10 64位

QT版本:  QT5.12.6

编译器:  MinGW 32

二、实现代码

每次程序打开之后,根据当前屏幕分辩率进行计算缩放系数,然后设置界面上的控件尺寸,不管有没有使用布局器都可以设置。


  
  1. /**************************************************
  2. 作者: DS小龙哥
  3. 环境: win10 QT5.12.6 VS2017 32位 Release
  4. 功能: 自适应工具栏按钮大小
  5. **************************************************/
  6. void AutoZoomButtonSize()
  7. {
  8. //获取屏幕属性
  9. QScreen *screen = QGuiApplication::primaryScreen();
  10. //获取屏幕的分辨率
  11. int lcd_width = screen->size().width();
  12. int lcd_height = screen->size().height();
  13. qDebug() << "当前系统分辨率:" << screen->size();
  14. //计算横向纵向坐标的伸缩系统
  15. double factorx = lcd_width / 1920.0; //1920 是开发电脑界面的分辨率
  16. double factory = lcd_height / 1080.0;
  17. //QList<QWidget*> widgets = this->findChildren<QWidget*>();
  18. //获取界面上所有的按钮
  19. QList<QToolButton*> buttonList = this->findChildren<QToolButton*>();
  20. //设置按钮大小
  21. for (int i = 0; i < buttonList.count(); i++)
  22. {
  23. qDebug() << "buttonList:" << buttonList.at(i)->objectName();
  24. ResetButtonGeometry(buttonList.at(i), factorx, factory);
  25. }
  26. //设置工具栏的最大高度
  27. int ToolFrame_MaxH= lcd_height / 1080.0 * 40;
  28. qDebug() << "原工具栏的高度:" << ui.ToolFrame->height();
  29. qDebug() << "现工具栏的高度:" << ToolFrame_MaxH;
  30. ui.ToolFrame->setMaximumHeight(ToolFrame_MaxH);
  31. ui.ToolFrame->setMinimumHeight(ToolFrame_MaxH);
  32. }
  33. //重设按钮分辨率
  34. void ResetButtonGeometry(QWidget *widget, double factorx, double factory)
  35. {
  36. int oldX = widget->x();
  37. int oldY = widget->y();
  38. int oldW = widget->width();
  39. int oldH = widget->height();
  40. qDebug() << "widget->geometry()1:" << widget->geometry();
  41. widget->move(oldX*factorx, oldY*factory);
  42. widget->resize(oldW*factorx, oldH*factory);
  43. widget->setMaximumSize(oldW*factorx, oldH*factory);
  44. widget->setMinimumSize(oldW*factorx, oldH*factory);
  45. qDebug() << "widget->geometry()2:" << widget->geometry();
  46. }

 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/115699621

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。