QT应用程序随设备分辨率的调整

设计一个简化版的调整分辨率的QT程序,读者可以自己根据需要修改,这里主要说明思路

思路:(比如要将电脑桌面上开发的qt程序应用到机器设备上)

           1.首先获取设备的宽和高(也就是分辨率)

           2.然后计算设备和电脑桌面分辨率的比例

           3.循环遍历应用中每个控件(因为大部分都是窗口控件)

           4.为每个控件设置新的宽和高(由比例进行计算)

1.首先新建项目Exam

2.在UI界面中设计想要做的界面

3.设计MainWindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDesktopWidget>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //获取新设备的分辨率
    int currentScreenWid = QApplication::desktop()->width();
    int currentScreenHei = QApplication::desktop()->height();
    //计算比例
    double factorx=currentScreenWid/1920.0;
    double factory=currentScreenHei/1080.0;
    //循环遍历应用中每个控件(因为大部分都是窗口控件,所以这里使用QWidget)
    QList<QWidget *> widget = this->findChildren<QWidget *>();
    foreach (QWidget * w, widget) {
        //为每个控件设置新的宽和高(由比例进行计算)
        resetGrid(w,factorx,factory);
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::resetGrid(QWidget *widget,double factorx,double factory){
    //获取每个窗口控件原有的位置和宽高
    int widgetX = widget->x();
    int widgetY = widget->y();
    int widgetWid = widget->width();
    int widgetHei = widget->height();
    //计算改变分辨率后每个窗口控件的位置和宽高
    int nWidgetX = (int)(widgetX*factorx);
    int nWidgetY = (int)(widgetY*factory);
    int nWidgetWid = (int)(widgetWid*factorx);
    int nWidgetHei = (int)(widgetHei*factory);
    //为每个窗口控件设置新的宽高
    widget->setGeometry(nWidgetX,nWidgetY,nWidgetWid,nWidgetHei);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值