设计网站页面的工作叫啥,广州网站建设高端网,如何自己建立网站建设,白云优化网站建设【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小】 1、前言2、实验环境3-1、问题说明-屏幕视频3-2、解决方式-个人总结解决思路#xff1a;我们在软件启动的时候#xff0c;先获取屏幕大小#xff0c;然后根据长宽#xff0c;按照一定比例#xff0c;重新设置大小。并… 【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小】 1、前言2、实验环境3-1、问题说明-屏幕视频3-2、解决方式-个人总结解决思路我们在软件启动的时候先获取屏幕大小然后根据长宽按照一定比例重新设置大小。并且先把软件布局布好内部控件也要规定好大小让其不会因为屏幕分辨率不同而乱显示。(1基础布局(2参考文章-QScreen类(3大佬指点 4、本次实验1、新建工程2-1、控件布局2-2、控件限定大小2-3、启动时扫描一下屏幕大小3、验证 5、实验代码-链接6、细节部分1多屏幕问题2旧的类问题 7、总结 1、前言
作为qt的初学者开始入门qt的时候很多东西其实也不是很会调试好的软件如何发给别人使用如何去做也不是很清楚的自己也查了很多资料才渐渐明白。 开始学习的时候不同分辨率屏幕适配性的问题一直没有较好的解决记得当时找过一些方式没能成功如今再次查找并且在大佬指点下可以一定程度上适配了或者说至少不会出现分配率很高DIY软件很小或者很大问题了。
另外软件看不看这些事情多少有些主观上意思说白了人的喜好不同布局出来的也不一样有点就是喜好大一点图标所以上我说一定程度上适配要是完全解决几乎不可能。
2、实验环境
实验环境还是挺重要的因为有时候在你电脑上能运行的东西在别人的电脑就不一定能运行这一部分的原因就可能是实验版本不一样。 系统环境window环境 QT软件版本qt 5.14.2
3-1、问题说明-屏幕视频
写相应文章都是为了解决相应问题的本次就是为了解决相关屏幕适配大小问题。 之前一直无法成功其实当时对qt等都不是特别了解只是知道可以重新设置软件外框大小不知道如何根据屏幕设置外壳再加上不会布局内部控件也不会随着外围框大小改变。 之后会布局后会加入图片等但是发现一改变屏幕分辨率控件和整体就会不适应所以困扰了许久。
如下图所示我屏幕是4k屏幕但是软件自动只是占据了一部分并不是自己想要自己虽然不希望铺满全屏但是至少大一些显示多一点。 3-2、解决方式-个人总结
**
解决思路我们在软件启动的时候先获取屏幕大小然后根据长宽按照一定比例重新设置大小。并且先把软件布局布好内部控件也要规定好大小让其不会因为屏幕分辨率不同而乱显示。
**
(1基础布局
首先要进行布局布局不只是调整各个控件比例等还是个人审美真正好的布局ui设计是需要花不少时间本博客只是为说明问题简单弄了一下。
参考文章【QT 整体窗口拖动大小内部控件无法跟随改变的原因解决布局相关布局设置】
(2参考文章-QScreen类
这里参考以下文章知道了有QScreen这个类是专门获取屏幕相关信息。 参考博文https://blog.csdn.net/WL0616/article/details/129182751
主要代码段如下
....QRect rect1 screen-geometry();qDebug() rect1 rect1.size().width() rect1.size().height();qDebug() rect1.topLeft();qDebug() rect1.bottomRight();QRect rect2 screen-availableGeometry();qDebug() rect2 rect2.size().width() rect2.size().height();qDebug() rect2.topLeft();qDebug() rect2.bottomRight();int screen_width rect2.size().width()*0.75; //设置可显示部分比例int screen_height rect2.size().height()*0.75; //设置可显示部分比例
...查看一下官方文档有更详细介绍大概意思就是说会扫描物理屏幕可以使用的面积然后win11上或许有些不同更详细请自行去文档中查看吧。 文档链接https://doc.qt.io/qt-5/qscreen.html#details
(3大佬指点
另外就是一个大佬指点所谓假传万卷书真传一句话简单总结就是为每个控件规定大小这在改变是所占有像素就不会有太大变化就不会出现适配性问题更严苛一点你可以设定固定一个值包括内部字体和图标图标主要是选择合适大小的。 4、本次实验
1、新建工程
往昔文章说的听多了可以参考其他位置作为初学者请看以下文章吧就不过多赘述了。
参考文章【QT 整体窗口拖动大小内部控件无法跟随改变的原因解决布局相关布局设置】
2-1、控件布局
本次为了说明问题简单拉了几个控件进行设置布局需要看细节的直接去“代码链接”部分看代码吧。 2-2、控件限定大小
设置一些大小包括但不限于字体使用图标外框等说起来挺简单但是实际微调还是需要反复实验的并且有时候你调试界面和最终软件运行还不一样进行反复实验才能得到自己满意的界面。
2-3、启动时扫描一下屏幕大小
如下为main.cpp文件内容再次文件内写入相关代码。
#include mainwindow.h
#include QDesktopWidget
#include QDebug
#include QScreen
#include QApplicationint main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;QDesktopWidget* pDesktopWidget QApplication::desktop();//获取可用桌面大小QRect deskRect QApplication::desktop()-availableGeometry();qDebug()deskRect:deskRect.x() deskRect.y()endl;//获取主屏幕分辨率QRect screenRect QApplication::desktop()-screenGeometry();qDebug()screenRect:screenRect.x() screenRect.y()endl;//获取屏幕数量int nScreenCount QApplication::desktop()-screenCount();qDebug()nScreenCount:nScreenCountendl;QScreen* screen QGuiApplication::primaryScreen();//获取当前实际屏幕大小QRect rect1 screen-geometry();qDebug() rect1 rect1.size().width() rect1.size().height();qDebug() rect1.topLeft();qDebug() rect1.bottomRight();//获取当前实际可用屏幕大小去掉下边框QRect rect2 screen-availableGeometry();qDebug() rect2 rect2.size().width() rect2.size().height();qDebug() rect2.topLeft();qDebug() rect2.bottomRight();int screen_width rect2.size().width()*0.75; //设置可显示部分比例int screen_height rect2.size().height()*0.75; //设置可显示部分比例w.resize(screen_width,screen_height);w.show();return a.exec();
}
3、验证
如下图所示可以按照自己的比例写设置大小,并且告诉你当前屏幕大小和可以使用的大小。 5、实验代码-链接
代码链接 https://download.csdn.net/download/qq_22146161/88352951
6、细节部分
1多屏幕问题
循环扫描重设屏幕大小。 实际每个人的喜好不同有人喜好用两个屏幕或者更多屏幕的软件在切换的时候或者被鼠标拖着去另一个屏幕时候这样情况本文暂时不讨论只是提供一个思路一种方式是检测的方式通过检测屏幕大小而更改软件大小。
2旧的类问题
博文中也提到了有个类已经不用软件会自动提示使用新的类。
7、总结
另外想说的是我的文章一般比较少的会讲某个原理性的东西一般来说一搜网上会有很多说的但是一般网上很少有存在具体解决方式的大多数情况其实我们都是明白一些道理的只是不知道如何去实现不知道如何去走那个路径我尽量趟出一条路告诉你如此做是可以的这样是可以解决实际问题的。