QT GUI 屏幕自适应
来源:互联网 发布:淘宝原单店铺推荐2016 编辑:程序博客网 时间:2024/06/16 18:49
一、网上很多资料说的模棱两可,故在此总结一套适配套路
原理:1、一般拿最小的分辨率来做基准配置,如480 x 320 ;
2、获取当前使用的屏幕分辨率,如1024 x 720
3、算出当前比例:scale_x = 1024/480 scale_y = 720 / 320
4、获取当前控件QWidget 坐标值,乘以对应比例。
5、Qwidget 可以获取当前子控件,一个一个适配。
二、获取当前屏幕分辨率
Application a(argc, argv);
x_width = a.desktop()->availableGeometry().width();
y_height = a.desktop()->availableGeometry().height();
三、获取QWidget 子控件
void childrenQwidget(QWidget *parent)
{
if (NULL == parent) return ;
//适配每个子空间坐标,长度宽度
do_adapt(parent);
QObjectList list = parten->children();
foreach(QObject *obj,list) {
if (obj->isWidgetType() || obj->isWindowType()) {
childrenQwidget(qobject_cast<QWidget*>(obj));
}
}
}
四、 适配每个子空间坐标,长度宽度
void do_adapt(QWidget *pwidget)
{
int x = pwidget->x();int y = pwidget->y();int w = pwidget->width();int h = pwidget->height();x = (int)(x*scale_x);y = (int)(y*scale_y);w = (int)(w*scale_x);h = (int)(h*scale_y);pwidget->setGeometry(x,y,w,h);
}五、全局变量int base_x = 480;int base_y = 320;float scale_x = 0;float scale_y = 0;void do_scale(int x,int y){if (x < 0 || y < 0) return;scale_x = ((float)x_width )/ base_x;
scale_y = ((float)y_height) / base_y;
}
阅读全文
0 0
- QT GUI 屏幕自适应
- Unity3d gui自适应屏幕
- Unity3d gui自适应屏幕
- Unity3d gui自适应屏幕
- QT程序自适应屏幕大小
- Qt自适应屏幕大小和控件按比例缩放的几个问题
- 屏幕自适应
- 屏幕自适应
- 屏幕自适应
- 屏幕自适应
- 自适应屏幕
- 屏幕自适应
- 屏幕自适应
- 屏幕自适应
- cocos2dx屏幕屏幕自适应
- Qt GUI
- GUI自适应矩阵
- android 屏幕自适应问题
- ue4 官网IK流程记录
- 一个RuntimeError: SendInput() inserted only 0 out of 2 keyboard events问题的解决
- 安装vegas的时候360报毒什么原因?
- WebSocket介绍与原理
- 关于Linux网络设备rtl8169代码分析笔记(一)-------MMIO
- QT GUI 屏幕自适应
- 【cocos2d-x 源码解析】shader 实现
- elasticsearch之字段缓存策略
- bzoj1257: [CQOI2007]余数之和sum(数论)
- [IBM MQ]2010解决
- Linux下终端配色设置
- xcode中关于pch和.h的引用
- C# 设置Excel打印选项及打印excel文档
- 在CentOS7上安装docker compose