【问题标题】:Quick Controls 2 bad looking快速控制 2 不好看
【发布时间】:2018-09-10 10:15:35
【问题描述】:

Qt 5.10,Windows 10 桌面。

以下 QML 代码:

import QtQuick 2.10
import QtQuick.Window 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3

Window {
    visible: true
    width: 250
    height: 100
    title: qsTr("My app")

    GridLayout
    {
        columns: 2

        Label {
            text: "Setting1:"
        }

        ComboBox {
            model: ["100%", "90%", "80%", "70%", "60%", "50%", "40%", "30%"]
        }

        CheckBox {
            id: tidle
            text: "Setting2:"
        }

        ComboBox {
            model: ["90%", "80%", "70%", "60%", "50%", "40%", "30%"]
            enabled: tidle.checked
        }
    }
}

给出以下结果:

对我来说看起来很糟糕:

1) “Setting1”标签和复选框没有明显对齐。

2) 与文本大小相比,复选框和组合框的大小太大。

我错过了什么还是正常行为?

【问题讨论】:

标签: qt qml qt5 qtquickcontrols2


【解决方案1】:

这是正常行为。

Control 具有以下布局:

例如,Label 的填充为 0,另一方面,CheckBox 如果有它以便它们对齐,则有 2 种可能的解决方案:

  • 将 CheckBox 的 leftPadding 设置为 0:

CheckBox {
    id: tidle
    text: "Setting2:"
    leftPadding: 0
}

  • 或者将Label设置为与CheckBox相同的leftPadding:

Label {
    text: "Setting1:"
    leftPadding : tidle.leftPadding
}

...

CheckBox {
    id: tidle
    text: "Setting2:"
}

Qt 提供以下指南来自定义Controls:

对于ComboBox 的大小,您可以使用FontMetrics 来计算合适的大小,在我的情况下,我在Linux 中,没有必要。

【讨论】:

  • 你是我的英雄! xD 顺便说一句,为什么不让所有控件的填充值都等于 0...
  • @AlexanderDyagilev 为什么这么说?您可能看不到效果,因为 ContenItem 有一个额外的内部空间。
  • 不,您的解决方案适合我。我的意思是 Qt 开发人员可以将所有填充设置为 0,因此不必像您的示例中那样设置填充值...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 2011-01-10
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
相关资源
最近更新 更多