0

我正在尝试制作一个非常简单的 KDE-Plasma 小部件,其中只显示一定的数字。我想让这个显示的数字的字体大小尽可能大,具体取决于包含它的父级。这是它现在的样子:

在此处输入图像描述

如您所见,里面的文字周围有很多空间。我真正想要的是类似于 KDE Plasma 中的“日期和时间”小部件(我的小部件就在它旁边以进行比较):

在此处输入图像描述

在这里,显示的时间周围的空间要小得多,而且每当面板高度发生变化时也会自动调整大小。

这是当前代码的样子:

import QtQuick 2.6
import QtQuick.Layouts 1.0
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.plasmoid 2.0


Item {
    id: main
    anchors.fill: parent
    Layout.minimumWidth: units.iconSizes.large
    Layout.minimumHeight: units.iconSizes.large

    
    Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation


    PlasmaComponents.Label {
        id: display

        anchors {
            fill: parent
            margins: Math.round(parent.width * 0.1)
        }

        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter

        text: foobar

        font.pixelSize: 1000;
        minimumPointSize: theme.smallestFont.pointSize
        fontSizeMode: Text.Fit
        font.bold: true
    }

    Timer {
        some stuff
    }
}


我尝试查看上述日期和时间小部件的代码,并写下具有相同定位/样式属性的完全相同的布局/控件(这是您在上面的代码中看到的),但我周围有很多空间我的文字/或字体大小仍然很小。

4

2 回答 2

1

我试过你的代码,它正确地调整了字体大小。对于文本周围的间距,有两点:

  1. margins通过调整您使用的值可以轻松控制左右间距。如果空间更小,请尝试Math.round(parent.width * 0.05).

在此处输入图像描述

  1. 顶部和底部的间距较大,因为您的父对象的形状是正方形,而文本的形状是矩形。为了使文本适合正方形的高度而不超过正方形的宽度,文本不仅需要调整大小,还需要垂直拉伸。但是 QML 没有一个简单的方法来做到这一点,我怀疑这是否真的是你想要的。

在此处输入图像描述

编辑:

如果你确实想要字体拉伸,我会告诉你这个答案。

于 2021-01-03T15:09:45.290 回答
0

感谢@JarMan 的输入,我能够意识到我的文本以小字体呈现,因为根 ( item) 元素是方形的,因此空间不足。

我现在发现要更改 KDE-Plasma 面板中根元素的布局大小,需要使用Layout.preferredWidthLayout.preferredHeight.

这是我所做的:

item {
    .
    .
    Layout.preferredWidth: 150 * units.devicePixelRatio
    Layout.preferredHeight: 50 * units.devicePixelRatio
    .
    .
}

注意:150 和 50 值不是最终值。它基本上给出了关于根元素的宽度和高度应该处于的比率的想法(我想要一个矩形)。当等离子面板调整大小时,它也会自动调整内部内容的大小。

于 2021-01-03T17:42:56.040 回答