首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML/Qt:使显示的文本尽可能大,取决于包含它的父文件

QML/Qt:使显示的文本尽可能大,取决于包含它的父文件
EN

Stack Overflow用户
提问于 2021-01-03 13:28:40
回答 2查看 303关注 0票数 0

我正在尝试做一个非常简单的KDE-等离子体Widget,其中只有一个特定的数字显示。我想使这个显示的数字具有尽可能大的字体大小,这取决于包含它的父文件。下面是它现在的样子:

正如你所看到的,里面的文字有很大的空间。实际上,我想要的是类似于在KDE等离子体中找到的“日期和时间”Widget (我的小部件就在它旁边进行比较):

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

下面是当前代码的样子:

代码语言:javascript
复制
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
    }
}

我试着查看上面的日期和时间小部件的代码,用相同的定位/样式属性写下完全相同的布局/控件(这就是您在上面的代码中看到的),但是我的文本/字体大小仍然很小。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-03 17:42:56

由于@JarMan的输入,我能够意识到,由于根(item)元素的形状是方形的,所以我的文本是以小字体呈现的。

我现在认为要改变KDE-等离子面板中根元素的布局大小,需要处理Layout.preferredWidthLayout.preferredHeight

以下是我所做的:

代码语言:javascript
复制
item {
    .
    .
    Layout.preferredWidth: 150 * units.devicePixelRatio
    Layout.preferredHeight: 50 * units.devicePixelRatio
    .
    .
}

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

票数 0
EN

Stack Overflow用户

发布于 2021-01-03 15:09:45

我试过你的代码,它正确地调整了字体的大小。关于案文前后的间距,有两点:

  1. 左、右的间距很容易通过调整正在使用的margins值来控制。要获得更少的空间,请尝试Math.round(parent.width * 0.05).

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

编辑:

如果你真的想要字型拉伸,我会告诉你this的答案。

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

https://stackoverflow.com/questions/65550368

复制
相关文章

相似问题

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