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

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

  1. import QtQuick 2.4
  2. import Ubuntu.Components 1.3
  3.  
  4. MainView {
  5. // objectName for functional testing purposes (autopilot-qt5)
  6. objectName: "mainView"
  7.  
  8. // Note! applicationName needs to match the "name" field of the click manifest
  9. applicationName: "fontsize.liu-xiao-guo"
  10.  
  11. width: units.gu(60)
  12. height: units.gu(85)
  13.  
  14. property string fontsize: listview.currentItem.fontsize
  15.  
  16. Page {
  17. title: i18n.tr("fontsize")
  18.  
  19. Component {
  20. id: highlightBar
  21. Rectangle {
  22. width: 200; height: 50
  23. color: "#FFFF88"
  24. y: listview.currentItem.y;
  25. Behavior on y { SpringAnimation { spring: 2; damping: 0.1 } }
  26. }
  27. }
  28.  
  29. Column {
  30. anchors.fill: parent
  31. spacing: units.gu(2)
  32.  
  33. Text {
  34. id: unitsgu
  35. text: "1 units.gu = " + units.gu(1) + " pixels"
  36. }
  37.  
  38. Row {
  39. spacing: units.gu(1)
  40. Text {
  41. id: mytext
  42. text: "我爱你。"
  43. font.pixelSize: (FontUtils.sizeToPixels(fontsize)).toFixed(2)
  44. }
  45.  
  46. Text {
  47. text: mytext.font.pixelSize + " pixels"
  48. }
  49.  
  50. Text {
  51. text: (mytext.font.pixelSize/units.gu(1)).toFixed(2) + " units.gu"
  52. }
  53. }
  54.  
  55. Row {
  56. spacing: units.gu(1)
  57.  
  58. Label {
  59. id: mylabel
  60. text: "我也爱你!
  61.  
  62. "
  63. fontSize: fontsize
  64. }
  65.  
  66. Text {
  67. text: mylabel.fontSize
  68. }
  69.  
  70. Text {
  71. text: (FontUtils.sizeToPixels(mylabel.fontSize)).toFixed(2) + " pixels"
  72. }
  73.  
  74. Text {
  75. text: (mytext.font.pixelSize/units.gu(1)).toFixed(2)+ " units.gu"
  76. }
  77. }
  78.  
  79. ListView {
  80. id: listview
  81. anchors.horizontalCenter: parent.horizontalCenter
  82. width: parent.width
  83. height: parent.height - mytext.height
  84. highlight: highlightBar
  85. model: ["xx-small","x-small", "small", "medium", "large", "x-large" ]
  86. delegate: Text {
  87. property string fontsize: modelData
  88.  
  89. text: modelData + " " + (FontUtils.modularScale(modelData)).toFixed(2)
  90. font.pixelSize: units.gu(5)
  91.  
  92. MouseArea {
  93. anchors.fill: parent
  94. onClicked: {
  95. listview.currentIndex = index
  96. }
  97. }
  98. }
  99. }
  100. }
  101.  
  102. }
  103. }

显示的界面例如以下:

 

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. spark scala word2vec 和多层分类感知器在情感分析中的实际应用

    转自:http://www.cnblogs.com/canyangfeixue/p/7227998.html 对于威胁检测算法使用神经网络训练有用!!!TODO待实验 /** * Created by ...

  2. 23.STL容器小结

  3. 数据仓库 SSIS

    SSDT 下载 :https://msdn.microsoft.com/en-us/library/mt204009.aspx Codeplex 上的 AdventureWorks 示例数据库此链接将 ...

  4. [转]60fps on the mobile web

    Flipboard launched during the dawn of the smartphone and tablet as a mobile-first experience, allowi ...

  5. BootStrap--panel面板

    1 <div class="panel panel-default"> <div class="panel-body"> 这是一个基本的 ...

  6. sys.path

    sys.path.append() 和 sys.path.insert() python程序中使用 import XXX 时,python解析器会在当前目录.已安装和第三方模块中搜索 xxx,如果都搜 ...

  7. php动态导出数据成Excel表格

    一.封装 Excel 导出类 include/components/ExecExcel.php <?php /*** * @Excel 导入导出类. */ class ExecExcel { / ...

  8. Nginx的日志备份操作

         正常情况下,我们给一个日志文件做备份.通常会 mv access.log access.log.0313 ,之后创建一个新的 touch access.log  会认为是备份完成了:旧的日志 ...

  9. gcd步数

    题目描述 一个有趣的函数F(a,b),表示对于数对(a,b)调用辗转相除法的步数为多少 例如 (24,40)....0 (16,24).....1 (8,16).....2 (0,8)....3,即f ...

  10. 紫书 习题 10-13 UVa 11526(打表找规律+分步枚举)

    首先看这道题目,我预感商数肯定是有规律的排列的,于是我打表找一下规律 100 / 1 = 100 100 / 2 = 50  100 / 3 = 33  100 / 4 = 25  100 / 5 = ...