如何在qml中的行元素内提供自定义间距

Posted

技术标签:

【中文标题】如何在qml中的行元素内提供自定义间距【英文标题】:how to give custom spacing inside a row element in qml 【发布时间】:2021-09-07 18:55:17 【问题描述】:

我正在尝试在 QML 中创建一个应该如下所示的 UI

也就是说,textField 元素和 Button 之间有一些额外的像素空间。

我正在尝试使用 QML 行元素重新创建此图像,如下所示

    Window 
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
    Row
        id:row_element
        anchors.horizontalCenter: parent.horizontalCenter
        spacing:20
        width: implicitWidth
        height: implicitHeight
        RadioButton
            id:min_timer_id
            text: "100"
            spacing: 5
        
        RadioButton
            id:max_timer_id
            text: "500"
            spacing: 5
        
        RadioButton
            id:custom_entry_rb
            text: "custom"
            spacing: 5
            width: 100
        

        TextField
            id:custom_entry
            placeholderText: "enter custom time"
            width: 200
        
        Button
            id:buttonId
            text: "start Timer"
            width: 200
            spacing: 100
        

    

我无法设置文本字段和按钮之间的自定义间距,有没有办法使用行元素来做到这一点?

我当前的 UI 如下所示:-

【问题讨论】:

【参考方案1】:

如果您需要将其保留在 Row 内,我只需添加一个不可见的 Item 作为分隔符。

Row 
    spacing: 20
    RadioButton 
    RadioButton 
    TextField 

    // Size this to whatever you need.
    Item  height: 1; width: 50 

    Button 

【讨论】:

【参考方案2】:

您可以将RowLayout 与具有Layout.fillWidth: trueItem 一起使用。

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Window 2.15
import QtQuick.Layouts 1.15

Window 
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    RowLayout 
        id: row_element
        spacing: 20
        anchors.top: parent.top
        width: parent.width

        RadioButton 
            id: min_timer_id

            text: "100"
            spacing: 5
        

        RadioButton 
            id: max_timer_id

            text: "500"
            spacing: 5
        

        RadioButton 
            id: custom_entry_rb

            text: "custom"
            spacing: 5
            width: 100
        

        TextField 
            id: custom_entry

            placeholderText: "enter custom time"
            width: 200
        
        Item
            Layout.fillWidth: true
        

        Button 
            id: buttonId

            text: "start Timer"
            width: 200
        

    


【讨论】:

感谢您的回复,但我想专门在行组件中执行此操作。

以上是关于如何在qml中的行元素内提供自定义间距的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义CollectionView中每个元素的大小和间距

如何在 QML 中访问基于 QObjectList 的模型中的某些元素

如何将具有自定义属性的组件移动到 QML 中的单独文件

如何在swift ios中的两个自定义表格视图单元格之间添加间距?

如何从 QML 组件调用自定义信号?

如何创建具有预定义状态的自定义 Quick QML 项目