Как установить динамический размер QFont?

Я сталкивался с QFontMetrics?
http://doc.qt.io/qt-5/qfontmetrics.html
Это дает высоту и ширину текущего шрифта.

Мне нужно запустить мое приложение в полноэкранном режиме на разных мониторах, для которых я использую класс Scale. http://doc.qt.io/qt-5/qml-qtquick-scale.html

Это возвращает высоту и ширину текущего экрана.

Есть ли способ использовать QFontMetrics или что-то еще, чтобы изменить размер шрифта в соответствии с размером монитора?

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.

0

Решение

Самый простой способ — установить QFont как Q_PROPERTY вашего элемента, чтобы вы могли установить его из QML:

#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:

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 — это функция, которая устанавливает связь между размером шрифта и размером окна.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]