首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置动态QFont大小?

如何设置动态QFont大小?
EN

Stack Overflow用户
提问于 2018-01-03 09:16:02
回答 1查看 1.4K关注 0票数 1

我遇到了QFontMetrics?http://doc.qt.io/qt-5/qfontmetrics.html

这给出了当前字体的高度和宽度。

我需要运行我的应用程序的全屏幕模式,在不同的显示器上,我正在使用比例类。http://doc.qt.io/qt-5/qml-qtquick-scale.html

返回当前屏幕的高度和宽度。

是否有一种方法可以使用QFontMetrics或其他任何东西来根据监视器大小更改字体大小?

代码语言:javascript
复制
ApplicationWindow
{
    id: head

    visible: true

    width:  Screen.width
    height: Screen.height

    title: "Novus Pilot"

    property var id: 0;

    Draw_on_qimage
    {
        id: draw_on_qimage
        anchors.fill: parent
        parent: image

        scaleX: head.width / 640
        scaleY: head.height / 480
    }
}

Draw_on_qimage是一个cpp类。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-03 10:20:36

最简单的方法是将QFont设置为项的Q_PROPERTY,这样就可以从QML中设置它:

代码语言:javascript
复制
#ifndef DRAWITEM_H
#define DRAWITEM_H

#include <QPainter>
#include <QQuickPaintedItem>

class DrawItem : public QQuickPaintedItem
{
    Q_OBJECT
    Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
public:
    DrawItem(QQuickItem *parent = Q_NULLPTR):QQuickPaintedItem(parent){}
    void paint(QPainter *painter){
        painter->setFont(mFont);
        painter->drawText(boundingRect(), "Hello");
    }
    QFont font() const{
        return mFont;
    }
    void setFont(const QFont &font){
        if(mFont == font)
            return;
        mFont = font;
        emit fontChanged();
        update();
    }

signals:
    void fontChanged();
private:
    QFont mFont;
};

#endif // DRAWITEM_H

要设置它的大小,我们使用pointSize属性QFont:

代码语言:javascript
复制
DrawItem
{
    id: draw_on_qimage
    anchors.fill: parent
    font.pointSize: some_function(head.width, head.height)
    transform: Scale {
        xScale: head.width / 640
        yScale: head.height / 480
    }
}

其中,some_function是建立字体大小与窗口大小之间关系的函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48074369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档