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

二、实现代码

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


      /**************************************************
      作者: DS小龙哥
      环境: win10 QT5.12.6 VS2017 32位 Release
      功能: 自适应工具栏按钮大小
      **************************************************/
      void AutoZoomButtonSize()
      {
     	//获取屏幕属性
      	QScreen *screen = QGuiApplication::primaryScreen();
     	//获取屏幕的分辨率
     	int lcd_width = screen->size().width();
     	int lcd_height = screen->size().height();
     	qDebug() << "当前系统分辨率:" << screen->size();
     	//计算横向纵向坐标的伸缩系统
     	double factorx = lcd_width / 1920.0;  //1920 是开发电脑界面的分辨率
     	double factory = lcd_height / 1080.0;
     	//QList<QWidget*> widgets = this->findChildren<QWidget*>();
         //获取界面上所有的按钮
      	QList<QToolButton*> buttonList = this->findChildren<QToolButton*>();
     	//设置按钮大小
     	for (int i = 0; i < buttonList.count(); i++)
      	{
     		qDebug() << "buttonList:" << buttonList.at(i)->objectName();
     		ResetButtonGeometry(buttonList.at(i), factorx, factory);
      	}
     	//设置工具栏的最大高度
     	int ToolFrame_MaxH= lcd_height / 1080.0 * 40;
     	qDebug() << "原工具栏的高度:" << ui.ToolFrame->height();
     	qDebug() << "现工具栏的高度:" << ToolFrame_MaxH;
      	ui.ToolFrame->setMaximumHeight(ToolFrame_MaxH);
      	ui.ToolFrame->setMinimumHeight(ToolFrame_MaxH);
      }
      //重设按钮分辨率
      void ResetButtonGeometry(QWidget *widget, double factorx, double factory)
      {
     	int oldX = widget->x();
     	int oldY = widget->y();
     	int oldW = widget->width();
     	int oldH = widget->height();
     	qDebug() << "widget->geometry()1:" << widget->geometry();
      	widget->move(oldX*factorx, oldY*factory);
      	widget->resize(oldW*factorx, oldH*factory);
      	widget->setMaximumSize(oldW*factorx, oldH*factory);
      	widget->setMinimumSize(oldW*factorx, oldH*factory);
     	qDebug() << "widget->geometry()2:" << widget->geometry();
      }
  
 

 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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