设计一个简化版的调整分辨率的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);
}