在Qt QML中更改按钮的字体大小

16

如何在QML中设置Button控件文本的字体大小?设计师没有此选项,'font'不是Button的有效属性。

Button {
    id: cmdQuit
    text: qsTr("Quit")
    width: 64
    height: 32
}
3个回答

30

您可以设置按钮的样式属性:

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2

Rectangle {
  id: container
  width: 800
  height: 800

  Button {
    id: cmdQuit
    text: qsTr("Quit")
    width: 64
    height: 32
    style: ButtonStyle {
      label: Text {
        renderType: Text.NativeRendering
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
        font.family: "Helvetica"
        font.pointSize: 20
        color: "blue"
        text: control.text
      }
    }
  }
}

3

针对QtQuick 2,您需要使用contentItem属性,如下所示:https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-button

import QtQuick 2.12
import QtQuick.Controls 2.12

Button {
    id: control
    text: qsTr("Button")

    contentItem: Text {
        text: control.text
        font.pointSize: 20
        opacity: enabled ? 1.0 : 0.3
        color: control.down ? "#17a81a" : "#21be2b"
        horizontalAlignment: Text.AlignHCenter
        verticalAlignment: Text.AlignVCenter
        elide: Text.ElideRight
    }
}

3

这是一个老问题,但由于它在搜索引擎中排名靠前,我会提供有关该情况的更新。

对于QtQuick2,与Chris所说的不同,您不再需要使用contentItem属性。您可以直接从Button访问font属性。

示例:

Button {
    id: btn
    text: "Test"
    font.pixelSize: 18
}

1
使用Pyside6/Qt6,我认为不支持像接受的答案中那样使用style属性,也不再可用QtQuick.Controls.Styles模块。 - SCP3008

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接