c++ - QML:如何检索默认字体对象?

标签 c++ qt qml

我有一个 QML Item,里面有一些 Text 字段,它们应该有相同的字体。为了实现这一点,我引入了一个 font 类型的新属性 myFont。请初始化此属性 我使用 Qt.font 函数创建一个字体对象。但我必须至少指定一个属性(familypointSize)。

我现在的问题是:如何检索 myFont 属性的默认字体? 如果我只创建一个 Text{} 项,它已经附加了默认字体,我如何才能为 myFont 属性获取相同的字体? (同时我使用隐藏的 Text 字段并为其 font 属性创建别名,但我想要一个更好的解决方案)。

Item {
 property font myFont: Qt.font({pointSize: 10})
 Text {
  id: header
  font: myFont
  text: "My Header"
 }
 Text {
  id: subject
  font: myFont
  text: "My Subject"
 }
 Text {
  id: message
  font: myFont
  text: "Some meassage!"
 }
}

最佳答案

我认为解决这个问题的正确方法是使用您需要使用的字体创建您自己的对象类型。

在下面的示例中,新对象将是 MyText.qml。我不知道你的整个代码,但我想你有一个 ListView,其中包含你在问题中发布的委托(delegate)。

MyText.qml

import QtQuick 2.0

Text {
    font: Qt.font({pointSize: 10})
}

ma​​in.qml

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    visible: true

    ListModel {
        id: myModel
        ListElement {
            header: "header xxx"
            subject: "subject xxx"
            message: "message xxx"
        }
        ListElement {
            header: "header yyy"
            subject: "subject yyy"
            message: "message yyy"
        }
        ListElement {
            header: "header zzz"
            subject: "subject zzz"
            message: "message zzz"
        }
    }

    ListView {
        anchors.fill: parent
        model: myModel
        delegate: Item {
            width: 300; height: 80
            Column {
                MyText {
                    id: myheader
                    text: header  + " - family: " + font.family  + " size: " + font.pointSize
                }
                MyText {
                    id: mysubject
                    text: subject  + " - family: " + font.family + " size: " + font.pointSize
                }
                MyText {
                    id: mymessage
                    text: message  + " - family: " + font.family + " size: " + font.pointSize
                }
            }
        }
    }
}

关于c++ - QML:如何检索默认字体对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712936/

相关文章:

python - 无法通过 MouseClick 将 MapCircles 添加到 QML map

c++ - 从 C++ 访问现有 QML 组件

c++ - 为什么在使用其他库时会出现 LNK4098 冲突 - 尝试在 MSVS2010 Express 中编译 C++ 时?

c++ - 如何在ffmpeg(c++)中获取视频流的格式

变量 '' 周围的 C++ 堆栈已损坏。 (D3D9)

c++ - 在现有的 c++ VS2010 程序中使用 Qt 库

QT 无框窗口调整大小捕捉

c++ - 在 C++ 中创建动态数据类型

c++ - 将光标更改为沙漏/等待/忙碌光标并返回 Qt

c++ - QHeaderView 样式每列