qt android开发篇之如何实现在不同分辨率手机中自适应字体大小,或者像素什么的
来源:互联网 发布:mac桌面文件夹不见了 编辑:程序博客网 时间:2024/06/06 04:40
我们知道现在手机屏幕的分辨率跟电脑的分辨率不同,或许你直接在电脑中设置的字体像素大小为20,在电脑中运行的时候看起来很正常 的字体,但是部署到手机后大家分先那些字看起来像蚂蚁一样小,这时候改怎么办呢?小编通过调用android api来解决这个问题,本来很 高兴的说发现qt中的qpplicationwindows这个有一个devicePixelRatio属性,但是它的值我不知道怎么算到手机上,所以只能调用android API了! 源码: Screen.java
package com.tommego.work;//tommegoimport java.util.List;import android.content.Context;//屏幕像素密度import android.util.DisplayMetrics;//蓝牙 开关import android.bluetooth.BluetoothAdapter;public class Screen extends org.qtproject.qt5.android.bindings.QtActivity{ private static Screen m_instance;//单例对象 private static BluetoothAdapter m_bluetoothAdapter;//蓝牙控制对象 public Screen(){ m_instance = this;//实例化单例对象 m_bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!m_bluetoothAdapter.isEnabled()){ //打开蓝牙 m_bluetoothAdapter.enable(); } } //获取屏幕像素密度 public static double getDentisy(){ DisplayMetrics metrics=new DisplayMetrics(); m_instance.getWindowManager().getDefaultDisplay().getMetrics(metrics); return metrics.density;// return 3; }}
devicescreen.h
#ifndef DEVICESCREEN_H#define DEVICESCREEN_H#include <QObject>#include <QAndroidJniObject>#include <QList>#include <QString>class DeviceScreen : public QObject{ Q_OBJECTpublic: explicit DeviceScreen(); ~DeviceScreen(); Q_PROPERTY(double dentisty READ dentisty WRITE setDentisty NOTIFY dentistyChanged) //获取屏幕像素密度 Q_INVOKABLE double getDentisy(); double dentisty(){ return this->m_dentisty; } void setDentisty(double a){ this->m_dentisty=a; }signals: void dentistyChanged();public slots:// void onDentistyChangedprivate: double m_dentisty;};#endif // DEVICESCREEN_H>##devicscreen.cpp#include"devicescreen.h"DeviceScreen::DeviceScreen(){ m_dentisty=getDentisy(); dentistyChanged();}DeviceScreen::~DeviceScreen(){}//获取屏幕像素密度double DeviceScreen::getDentisy(){ return QAndroidJniObject::callStaticMethod<double>("com/tommego/work/Screen", "getDentisy","()D");}
main.cpp
#include <QApplication>#include <QQmlApplicationEngine>#include <QtQml>#include <QQmlContext>#include "Device/devicescreen.h"int main(int argc, char *argv[]){ QApplication app(argc, argv); QQmlApplicationEngine engine; qmlRegisterType<DeviceScreen>("Device",1,0,"MyDevice");// QQmlContext *context = new QQmlContext(engine.rootContext()); DeviceScreen device;// context->setContextProperty("mydevice",&device);// context->set engine.rootContext()->setContextProperty("mydevice",&device); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec();}
main.qml
import QtQuick 2.4import QtQuick.Controls 1.3import QtQuick.Window 2.2ApplicationWindow { width: Screen.desktopAvailableWidth height: Screen.desktopAvailableHeight visible: true Text{ text:"hello" font.pixelSize:20*mydevice.dentisty//设置字体大小 anchors.centerIn:parent }}
点赞
转载:http://ju.outofmemory.cn/entry/200667
0 0
- qt android开发篇之如何实现在不同分辨率手机中自适应字体大小,或者像素什么的
- android如何让字体大小在不同分辨率中随之变化?
- Android中,字体大小自适应不同分辨率,以及注意事项
- Android 字体大小怎么自适应不同分辨率?
- Android 字体大小怎么自适应不同分辨率?
- Android字体大小怎么自适应不同分辨率?
- Android字体大小怎么自适应不同分辨率?
- Android:自适应不同分辨率的字体大小
- android开发:在不同分辨率,不同屏幕密度dpi的平板上的字体大小和布局的自适应
- android如何在代码中让字体大小在不同分辨率中随之变化?
- Android手机在不同分辨率情况下字体自适应大小
- Android手机在不同分辨率情况下字体自适应大小
- Android手机在不同分辨率情况下字体自适应大小
- android 开发 手机像素与分辨率
- Android:自适应不同分辨率的屏幕大小、方向和不同分辨率的字体大小
- android开发dip和像素互转(不同分辨率的手机之间转换比例不一样)
- 微信公众平台Java开发如何让网页自适应不同分辨率的手机浏
- 关于android手机开发中支持不同分辨率的总结
- 一起脱去小程序的外套和内衣 - 微信小程序架构解析
- MyEclipse新建文件时自动添加注释
- 制作docker镜像(1)jdk7+tomcat7基础镜像
- 原创:微信小程序使用flex样式属性(干货)
- linux为什么比windows做服务器好?
- qt android开发篇之如何实现在不同分辨率手机中自适应字体大小,或者像素什么的
- CentOS7 安装Mysql5.7(解压缩版)
- (1)riak_core基本原理
- linux shell 写swoole重启脚本
- SearchView与隐藏显示actionbar
- 倒三角形 (triangle)
- tomcat 优化之gzip压缩
- LeetCode-386. Lexicographical Numbers-思路详解-C++
- vim里批量字符串处理