1

QFontMetrics の概念を検証および視覚化するために、qml および cpp ファイルを作成しました。

#include <QFontMetrics>
#include<QFontMetricsF>
#include<QDebug>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QString translation = " Sort médicament à la liste des filtres";
QString fontname = "Frobisher";
int size = 28;

QFont font(fontname,size);
QFontMetrics fm(font);
int pixelsWide = fm.width(translation);


qDebug()<<"width "<<pixelsWide;
return app.exec();
}

main.qml ファイル

Window 
{
visible: true
width: 940
height: 480
title: qsTr("Hello World")

Rectangle
{
    color: "blue"
    width: 642
    height: 47
    Text {
        id: txt
        anchors.fill: parent
        anchors.centerIn: parent.Center
        text: qsTr(" Sort médicament à la liste des filtres")
        font.family: "Frobisher"
        font.bold: true
        font.pixelSize: 28
        elide: Text.ElideRight

    }
}
}

このプログラムを実行すると、QFontMetrics によって提供される幅は : 694 です。しかし、Rectangle と Text の qml ファイルで設定されている幅は 642 であり、elide プロパティも設定されています。このロジック (694 > 642 など) では、切り捨てが発生するはずです。しかし、切り捨ては見られません。

qml出力を参照してください

どうしてこれなの?理解できません。

4

1 に答える 1