【Qt】根据界面所在显示器自适应调整ui大小

这篇具有很好参考价值的文章主要介绍了【Qt】根据界面所在显示器自适应调整ui大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据界面所在显示器自适应调整ui大小

获取屏幕信息

使用QDesktopWidget、QApplication::screens()等获取屏幕宽高、DPI等信息,详见上一篇概述。

设置界面元素的大小类型

我们需要将窗口、布局和控件的大小类型(size type)设置为相对单位,如:

  • 设置窗口的尺寸策略为Qt::SizePolicy::Expanding
  • 使用setBaseSize() + setSizeIncrement() 使窗口大小可根据屏幕比例增长
  • 使用 percentages 而不是像素为布局和控件设置大小
  • 使用em/pt等相对单位代替硬编码的像素值
    例如:
window->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 
window->setBaseSize(500, 400);
window->setSizeIncrement(0.2, 0.2); // 窗口大小每次增加20%

layout->setContentsMargins(20%, 10%, 10%, 10%);
label->setMinimumSize(3em, 1em);

根据DPI和屏幕比例调整界面元素大小

我们可以根据screens()遍历所有屏幕,并根据每个屏幕的DPI和宽高比例相应调整窗口、布局和控件大小。
例如:

QList<QScreen*> screens = QApplication::screens();
for (QScreen* screen : screens) {
    qreal dpi = screen->logicalDotsPerInch();
    qreal ratio = (qreal)screen->geometry().height() / screen->geometry().width();
    
    // 根据DPI和ratio调整窗口大小
    int baseWidth = 500 * dpi / 96;     // 96 is Qt's default logical DPI 
    int baseHeight = baseWidth * ratio;
    window->setBaseSize(baseWidth, baseHeight);
    
    // 根据DPI调整padding
    int padding = 20 * dpi / 96;
    layout->setContentsMargins(padding, ...);  
    
    // ...
}

根据屏幕变化动态更新界面

我们需要监听屏幕变化的信号,如:

- QDesktopWidget::screenCountChanged()
- QScreen::geometryChanged()
- QScreen::logicalDotsPerInchChanged()
并在相应的槽函数中重新根据当前屏幕信息调整界面大小。
例如:
cpp
void onScreenCountChanged() {
    // 获取当前屏幕信息,重新调整窗口大小
    // ...  
}

void onScreenGeomtryChanged(QScreen *screen) {
    // 获取screen的新信息,根据比例/DPI重新调整界面 
    // ... 
} 

// 连接信号槽   
connect(QApplication::desktop(), &QDesktopWidget::screenCountChanged, 
        this, &Window::onScreenCountChanged);
for (QScreen* screen : QApplication::screens()) {
    connect(screen, &QScreen::geometryChanged, 
            this, &Window::onScreenGeomtryChanged);  
} 

所以,总结来说,要实现根据屏幕信息动态调整界面大小,主要需要:文章来源地址https://www.toymoban.com/news/detail-426284.html

  1. 获取屏幕信息(DPI、宽高比等)
  2. 将界面元素大小设置为相对单位
  3. 根据屏幕信息计算并设置界面元素的基本大小
  4. 监听屏幕变化信号,动态更新界面
  5. 如果有多个屏幕,需要对每个屏幕进行上述步骤
    理解这一屏幕适配过程和各项技术的应用,可以让我们的应用程序具备很好的跨设备兼容性,为用户提供更好的视觉体验。动态调整界面大小也是响应式布局的重要内容之一,是当前UI开发者应掌握的一个很有用的技能。
    希望这个概述能帮助您进一步理解屏幕适配的实现方法。如果您有任何其他相关问题,欢迎在下方提出! (已编辑)

到了这里,关于【Qt】根据界面所在显示器自适应调整ui大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 将打开在扩展显示器的界面移动到主显示器中的方法

    场景: 当电脑屏幕被用作扩展屏之后,再链接主机当做主屏幕,会导致打开的页面在屏幕之外。 解决方法一: 首先:同时按住Alt+Tab键选中要移动的界面后,松开Alt和Tab键; 然后:按住Win+向左或向右的箭头,可以将副显示器的界面移动到主显示器中。 解决方法二: 首先打

    2024年02月11日
    浏览(140)
  • 外接竖屏显示器virtual box虚拟机屏幕分辨率不能自适应

    问题描述: 笔记本外接竖屏显示器后,virtual box 无适合分辨率 导致结果如图  解决方案: 1.确保虚拟机关闭 2.双击此处修改显卡设置为VBoxSVGA 3.重启虚拟机--- 找到视图界面,勾选“自动调整显示尺寸”    修改视图中的模式即可(依然失败可尝试将外接显示器设置为主屏幕

    2024年02月14日
    浏览(81)
  • 关于电脑显示器屏幕看不出灰色,灰色和白色几乎一样无法区分,色彩调整方法

    问题: 电脑显示器屏幕看不出灰色,灰色和白色几乎一样无法区分。白色和灰色有色差。 解决方法: 打开“控制面板” -“色彩管理” -“高级” -“校正显示器” 在下一步调节中调成中间这一个实例的样子就可以了 进行微调,让其可以显示灰色 调整周边色彩至中间的灰色

    2024年02月17日
    浏览(73)
  • Qt怎么获取显示器分辨率

    您可以使用QScreen类来获取当前显示器的分辨率。以下是一个示例代码: 上面的程序将输出主屏幕的分辨率。 如果您有多个显示器并且需要获取其中一个的分辨率,则可以使用QDesktopWidget类。下面是一个示例代码: 上面的程序将输出第2个屏幕的分辨率。请注意,屏幕编号从

    2024年02月13日
    浏览(53)
  • Qt之高DPI显示器 - 解决方案整理

    随着显示器质量的增高,高分屏逐渐增多,很多用户平时使用的机器都是2k屏甚至是4k屏。 显示器分辨率变大后,同样的物理尺寸下可以表示更多的点,也就是我们平时所说的像素。 误区说明 我们现在平时所说的软件像素应该是PPI(Pixels Per Inch),中文意思是每英寸像素数,而

    2024年02月04日
    浏览(41)
  • QT Creator写一个简单的电压电流显示器

    本文主要涉及上位机对接收的串口数据处理,LCD Number控件的使用。之前的一篇写一个简单的LED控制主要是串口发出数据,这里再看一下怎么接收数据处理数据,这样基本就对串口上位机有简单的认识了。 这一小节通过用一个LCD Number实时显示时间的例程认识一下LCD Number控件。

    2024年02月11日
    浏览(48)
  • 【开机进入Windows界面后键鼠失灵 伴随显示器黑屏或卡顿,解决过程】

    补充: 如果是开机后显示灯亮且CPU风扇正常旋转,键盘灯亮后又熄,显示器一直黑屏。 最先检查是不是VGA线/HDMI线连接主机的那端没有接在显卡上!!! 故障描述: 开机,输入开机密码并解锁成功后键盘鼠标失灵。 尝试重启解决,但无效: 更换USB接口后重插键鼠无效。重

    2024年02月09日
    浏览(47)
  • win11系统安装无线显示器后,该功能在界面中消失,无法成功启用投影的情况

    昨天想用两个笔记本实现双屏,选择其中一台win11的作为副屏幕,投影主屏幕的内容,但是下载安装无线显示器后,在可选功能和已安装功能找不到无线显示器,无法启用该功能。 1.使用管理员权限进入powershell 2.输入dism /Online /Get-Capabilities查看所有可选功能 3.发现无线显示器

    2024年02月12日
    浏览(49)
  • 笔记本通过HDMI接口扩展显示器,微信/Outlook等界面模糊变清晰的解决办法

    解决方案: 第一步:鼠标右键打开微信快捷方式,选择‘属性’,找到‘兼容性’,选择‘ 更改高DPI设置’ 第二步:高DPI缩放替代:勾选✔ ‘替代高DPI缩放行为’ 第三步:点击“确定”。 第四步:重新启动微信,微信界面的字体显示清晰了   解决方法: 点击Outlook【文件

    2024年02月03日
    浏览(62)
  • 树莓派登录的四种方式:显示器、串口、远程网络ssh和图形xrdp界面登录

    目录 一、树莓派登录(一)显示器登录 1、用HDMI线接入显示屏,给树莓派usb接口上电可以看到树莓派开机过程 二、树莓派登录(二)串口登录 1、树莓派串口登录 2、USB-TTL连接树莓派串口

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包