当前位置: 首页 > wzjs >正文

展厅设计与施工沧州网站优化

展厅设计与施工,沧州网站优化,网站建设用语,设计学校网站模板前言 Windows 显示设置中,可以修改缩放比,所有界面和文字会同比例放大或缩小,在开发桌面程序时, 实时监测Qt应用程序在不同缩放比例下的表现,可以及时调整程序界面以适应不同显示屏幕的需求。 正文 本文通过Qt相关…

前言

Windows 显示设置中,可以修改缩放比,所有界面和文字会同比例放大或缩小,在开发桌面程序时, 实时监测Qt应用程序在不同缩放比例下的表现,可以及时调整程序界面以适应不同显示屏幕的需求。
在这里插入图片描述

正文

本文通过Qt相关接口实时监测系统分辨率和缩放比的变化,并通过发送信号通知UI进行处理。兼容多屏情况,会自动检测软件窗口所在的屏幕。
关键代码:

// HighDpiHelper.h
#ifndef HIGHDPIHELPER_H
#define HIGHDPIHELPER_H#include "qfont.h"
#include "qscreen.h"
#include <QObject>
#include <QWindow>
#include <QGuiApplication>
#include <QDebug>/*** @brief The HighDpiHelper class* @author luoyayun361* 自动监测程序所在的屏幕 缩放比变化* 使用需要先调用 dpiHelper.setWindow(mainWindow),mainWindow是主窗口id*/class HighDpiHelper : public QObject
{Q_OBJECTpublic:HighDpiHelper() {//适配多屏幕的情况,只监测程序窗口所在的屏幕for(auto &screen : qApp->screens()){connect(screen,&QScreen::logicalDotsPerInchChanged,this,[=](qreal dpi){if(!m_win){return;}auto sc = QGuiApplication::screenAt(QPoint(m_win->x(),m_win->y()));auto send = qobject_cast<QScreen*>(sender());if(sc == nullptr && send == nullptr){return;}if(sc->geometry() == send->geometry()){qDebug() <<__FUNCTION__<< "logicalDotsPerInchChanged="<<dpi/96.;emit dpiChanged(dpi/96.0f);}});}for(auto &screen : qApp->screens()){connect(screen,&QScreen::geometryChanged,this,[=](const QRect &geometry){if(!m_win){return;}auto sc = QGuiApplication::screenAt(QPoint(m_win->x(),m_win->y()));auto send = qobject_cast<QScreen*>(sender());if(sc == nullptr && send == nullptr){return;}if(sc->geometry() == send->geometry()){emit screenGeometryChanged(geometry);}});}}Q_INVOKABLE void setWindow(QWindow *win){m_win = win;}//获取当前屏幕缩放比Q_INVOKABLE float getScreenScalingFactor() {auto sc = QGuiApplication::screenAt(QPoint(m_win->x(),m_win->y()));if(sc){return sc->logicalDotsPerInch() / 96.0f; // 96 dpi 是 Windows 的标准DPI,所有的缩放比都是相对于标准 DPI 的}else{return 1.0;}}//获取窗口所在的屏幕尺寸Q_INVOKABLE QSize getScreenAvailableSize() {auto sc = QGuiApplication::screenAt(QPoint(m_win->x(),m_win->y()));if(sc){return sc->availableSize();}else{return qApp->screens().first()->availableSize();}}signals:void dpiChanged(float scaleFactor);void screenGeometryChanged(const QRect &geometry);
private:QWindow *m_win = nullptr;
};
#endif // HIGHDPIHELPER_H

如果是在QWidget项目中,可以将QWindow 改成QWidget,然后将主窗口指针传进来即可。QML项目的话 直接使用QWindow就行。附件提供了两种场景下的demo调用。

本文demo下载

http://www.dtcms.com/wzjs/11647.html

相关文章:

  • 湘潭县委网站长沙百度网站推广
  • 深圳做网站最好的公司利用搜索引擎营销成功的案例
  • 网站想要被收录要怎么做怎么做网上销售
  • 本地资讯网站做的最好的网站上做推广
  • 做传单的网站微博推广平台
  • 第一次做网站不知道中美关系最新消息
  • vue做网站看不到htmI吗网页模板免费html
  • 麻涌手机网站设计培训心得体会范文大全1000
  • c语言如何做网站二级网站怎么做
  • 新乡做网站推广的有什么功能
  • 百度网站大全旧版哈尔滨seo关键词优化
  • 网站设置了跳转被qq拦截seo站内优化和站外优化
  • 商务网站建设概念百度网页版链接
  • 天猫官方网站百度seo怎么操作
  • 网站seo优化有哪些方面官方百度app下载
  • 电子商务网站建设价格seo工资服务
  • 天津网站设计推荐刻网站怎么快速排名
  • 网站开发所需费用明细优化大师
  • 男人和女人晚上做污污的视频大网站企业网站的作用
  • 华大网站建设百度怎么投放广告
  • 物联网就业方向百度快照优化排名怎么做
  • 推广产品南京seo网站管理
  • 网站建设怎么自学广州品牌营销服务
  • 0317网站建设谷歌官网入口手机版
  • 番禺做网站开发外贸网站建设案例
  • 美食欣赏网站网络营销swot分析
  • 西安做网站公司那家好百度的网址是什么呢
  • 企业咨询流程免费seo搜索优化
  • 汕头免费建设网站制作服装市场调研报告
  • 动态照片素材网站seo专员工作容易学吗