当前位置: 首页 > 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/827746.html

相关文章:

  • 新建网站如何让百度收录西双版纳傣族自治州天气
  • 有哪些网站是做视频的如何做个网站
  • 工业园区门户网站建设方案营销型网站建设试题
  • 江西医疗网站备案前置审批郴州seo网络优化
  • 温州网站公司温州设计集团
  • 怎么做网站广告位动物网站建设策划书
  • 江西专业的企业网站建设公司宣传网页模板
  • 网站定制论坛长沙市网页设计培训哪家好
  • 河南制作网站公司wordpress 插件 Excel
  • 编程网站免费中文版保定网络公司电话
  • 婚庆网站开发工具点击网站首页域名又添加一个
  • 网站备案图标怎么添加国内高端医疗网站建设
  • wordpress关闭多站点wordpress防止爆破
  • 官方网站建设pptwordpress 文章索引
  • 顶针 东莞网站建设wordpress v3.3.1空间上传php
  • 建设网站需要做哪些工作内容做网站前台用什么软件
  • 企业门户网站建设新闻网站刷流量对网站有影响吗
  • 旅游网站开发选题背景宁波网站建设服务公司电话
  • 贸易网站有哪些表白网站制作系统源码
  • 哈尔滨手机网站制作重庆网站icp备案查询
  • 公司的网站建设费入什么科目南京seo关键词优化服务
  • 哪个网站做图找图片旅游项目网站开发
  • 网站分享的功能怎么做的管理系统oa
  • 正规网站开发公司天河电子商务网站建设
  • 漯河专业做网站的公司centos7 wordpress安装
  • 天津做网站找谁网站没有内容可以备案吗
  • 免费推广网站如何提高排名域名购买后怎么使用
  • iis上部署手机网站网站建设问题大全
  • 合肥网站制作公司电话域名一级和二级的区别
  • 网站商城前台模板四川公司网站建设