我们知道我们有时须要显示text文本。可是,在QML应用中。我们应该怎样选择font的大小呢?在今天的这篇文章中,我们将展示在Ubuntu平台中的不同文字的大小。我们能够通过FontUtils来帮我们把“large”字体的text转换为pixel大小。

我们的測试应用例如以下:

import QtQuick 2.4
import Ubuntu.Components 1.3 MainView {
// objectName for functional testing purposes (autopilot-qt5)
objectName: "mainView" // Note! applicationName needs to match the "name" field of the click manifest
applicationName: "fontsize.liu-xiao-guo" width: units.gu(60)
height: units.gu(85) property string fontsize: listview.currentItem.fontsize Page {
title: i18n.tr("fontsize") Component {
id: highlightBar
Rectangle {
width: 200; height: 50
color: "#FFFF88"
y: listview.currentItem.y;
Behavior on y { SpringAnimation { spring: 2; damping: 0.1 } }
}
} Column {
anchors.fill: parent
spacing: units.gu(2) Text {
id: unitsgu
text: "1 units.gu = " + units.gu(1) + " pixels"
} Row {
spacing: units.gu(1)
Text {
id: mytext
text: "我爱你。"
font.pixelSize: (FontUtils.sizeToPixels(fontsize)).toFixed(2)
} Text {
text: mytext.font.pixelSize + " pixels"
} Text {
text: (mytext.font.pixelSize/units.gu(1)).toFixed(2) + " units.gu"
}
} Row {
spacing: units.gu(1) Label {
id: mylabel
text: "我也爱你! "
fontSize: fontsize
} Text {
text: mylabel.fontSize
} Text {
text: (FontUtils.sizeToPixels(mylabel.fontSize)).toFixed(2) + " pixels"
} Text {
text: (mytext.font.pixelSize/units.gu(1)).toFixed(2)+ " units.gu"
}
} ListView {
id: listview
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
height: parent.height - mytext.height
highlight: highlightBar
model: ["xx-small","x-small", "small", "medium", "large", "x-large" ]
delegate: Text {
property string fontsize: modelData text: modelData + " " + (FontUtils.modularScale(modelData)).toFixed(2)
font.pixelSize: units.gu(5) MouseArea {
anchors.fill: parent
onClicked: {
listview.currentIndex = index
}
}
}
}
} }
}

显示的界面例如以下:

 

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVWJ1bnR1VG91Y2g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="200" height="300" alt=""> 

  

我们能够通过改变在ListView中的font大小得到对应的pixsize及多少个units.gu值。依据这个,我们能够来选择我们适合的字体的大小。

整个项目的源代码在:https://github.com/liu-xiao-guo/fontsize

正确地在QML应用中使用fontsize的更多相关文章

  1. 在QML应用中实现threading多任务

    在这个样例中,我们将介绍怎样在QML应用中使用QML语言提供的threading功能,实现多任务. 很多其它的阅读在:http://doc.qt.io/qt-5/qtquick-threading-e ...

  2. 怎样在QML应用中调用系统设置中的页面来设置我们的系统

    我们在QML应用中有时须要调用系统设置(system settings)来完毕我们的一些设置.比方,我们在使用GPS来定位时,可能GPS并没有打开,假设在我们的应用中直接打开系统中的GPS设置页面,这 ...

  3. 在Qt示例项目的C ++ / QML源中的//! [0]的含义是什么?

    在Qt示例项目的C ++ / QML源中的//! [0]的含义是什么? 例如:  //! [0] GLWidget :: GLWidget(Helper * helper,QWidget * pare ...

  4. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  5. 解决QML开发中ComboBox中一个已选择项没有清除的问题

    解决QML开发中ComboBox中一个已选择项没有清除的问题 近期使用QML开发一个项目.须要使用ComboBox进行显示.当进行一个操作时,须要向ComboBox加入一个元素,当进行另外一个操作时. ...

  6. 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100

    出现这个问题的背景是,判断一批激活码在系统中是否已经存在,很傻的一个作法是,把这一批激活码,以in(in (‘ddd‘,‘aaa‘))的形式来处理,导致问题的出现. 后来,查找资料,http://bb ...

  7. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

  8. 如何通过Keil将程序正确的下载进flash中

    前面介绍了一些创建工程和调试的基本步骤,在这里准备介绍一下如何正确的将Keil程序在仿真调试中下载到flash.这里再次涉及到了debug的窗口.   工具/原料   Keil uVision 4/5 ...

  9. 怎样在QML应用中创建一个Context Menu

    我们在非常多的系统中看见能够在屏幕的一个地方长按,然后就能够依据当前显示的上下文弹出一个菜单. 菜单中能够有一些选项,比方删除,改动该项.这样的一般在ListView或GridView中常见.今天,我 ...

随机推荐

  1. BMP图片格式模型

    BMP BMP(全称Bitmap)是Window操作系统中的标准图像文件格式 可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广. 它采用位映射存储格式,除了图像深度可选以外,不 ...

  2. BZOJ 3223 Splay区间翻转

    思路: 区间翻转的裸题 终于tm理解splay了-- //By SiriusRen #include <cstdio> #include <cstring> #include ...

  3. HD-ACM算法专攻系列(2)——Rightmost Digit

    题目描述: 源码: /**/ #include"iostream" using namespace std; int main() { int t, mod; long long ...

  4. P1452 Beauty Contes

    题目背景 此处省略1W字^ ^ 题目描述 贝茜在牛的选美比赛中赢得了冠军”牛世界小姐”.因此,贝西会参观N(2 < = N < = 50000)个农场来传播善意.世界将被表示成一个二维平面 ...

  5. 200 from memory cache / from disk cache / 304 Not Modified 区别

    三者情况有什么区别和联系,什么情况下会发生200 from memory cache 或 200 from disk cache 或 304 Not Modified? 200 from memory ...

  6. 谈谈Vim中实用又好记的一些命令

      本文的目的在于总结一些日常操作中比较实用.有规律的Vim命令,而不致于介绍一些基础的Vim知识,比如几种插入模式,hjkl移动命令,dd删除本行,p粘贴 等等,故对Vim基本知识不够熟悉的请参见其 ...

  7. NodeJS学习笔记 (13)数据加密-crypto(OK)

    写在前面 本章节写得差不多了,不过还需要再整理一下(TODO). hash例子 hash.digest([encoding]):计算摘要.encoding可以是hex.latin1或者base64.如 ...

  8. luoguP1401 城市(二分答案+最大流)

    题意 N(2<=n<=200)个城市,M(1<=m<=40000)条无向边,你要找T(1<=T<=200)条从城市1到城市N的路,使得最长的边的长度最小,边不能重复 ...

  9. LNMP安装部署开源IP管理工具phpipam

    1.数据库 mariadb 安装 //依赖安装 yum install -y apr* autoconf automake bison bzip2 bzip2* compat* \ cpp curl ...

  10. vuex 闲置状态重置方案

    前言 大型单页应用(后面都是指spa),我们往往会通过使用状态管理器 vuex 去解决组件间状态共享与状态传递等问题.这种应用少则几十个单页,多则上百个单页.随着路由的频繁切换,每个路由对应的 vue ...