QML环绕式按钮以较宽的布局排列

时间:2019-06-23 00:38:55

标签: qt qml

当对话框窗口调整大小以使其被用户缩小时,如何使按钮换行?目前它们只是临界值。

enter image description here

QML

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0


Frame {
    width: parent.width
    height: parent.height

    ColumnLayout {
        width: implicitWidth
        spacing: 20
        anchors.left: parent.left
        anchors.right: parent.right
        Layout.alignment: Qt.AlignTop

        // Config
        ColumnLayout {
            Layout.fillWidth: true
            spacing: 2

            Label {
                text: "Config"
                font.bold: true
            }
            TextField {
                readOnly: true
                placeholderText: qsTr("Path to config.json file (C:\\desktop\\config.txt)")
                Layout.fillWidth: true
            }

            RowLayout {
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignRight

                Button {
                    text: qsTr("Edit")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Browse")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Clear")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Find")
                    implicitWidth: implicitHeight
                }
            }
        }


        // File
        ColumnLayout {
            Layout.fillWidth: true
            spacing: 2

            Label {
                text: "File"
                font.bold: true
            }
            TextField {
                readOnly: true
                placeholderText: qsTr("Path to config.json file (C:\\desktop\\file.txt)")
                Layout.fillWidth: true
            }

            RowLayout {
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignRight

                Button {
                     text: qsTr("Clear")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Find")
                    implicitWidth: implicitHeight
                }
            }
        }

    }
}

main.qml

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

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


    Page1 {
        anchors.centerIn: parent
    }
}

1 个答案:

答案 0 :(得分:3)

您必须使用Flow而不是RowLayout:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

Frame {
    width: parent.width
    height: parent.height
    ColumnLayout {
        width: implicitWidth
        spacing: 20
        anchors.left: parent.left
        anchors.right: parent.right
        Layout.alignment: Qt.AlignTop
        // Config
        ColumnLayout {
            Layout.fillWidth: true
            spacing: 2

            Label {
                text: "Config"
                font.bold: true
            }
            TextField {
                readOnly: true
                placeholderText: qsTr("Path to config.json file (C:\\desktop\\config.txt)")
                Layout.fillWidth: true
            }
            Flow {
                Layout.fillWidth: true
                layoutDirection: Qt.RightToLeft 

                Button {
                    text: qsTr("Edit")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Browse")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Clear")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Find")
                    implicitWidth: implicitHeight
                }
            }
        }
        // File
        ColumnLayout {
            Layout.fillWidth: true
            spacing: 2

            Label {
                text: "File"
                font.bold: true
            }
            TextField {
                readOnly: true
                placeholderText: qsTr("Path to config.json file (C:\\desktop\\file.txt)")
                Layout.fillWidth: true
            }

            Flow {
                Layout.fillWidth: true
                layoutDirection: Qt.RightToLeft 

                Button {
                     text: qsTr("Clear")
                    implicitWidth: implicitHeight
                }
                Button {
                     text: qsTr("Find")
                    implicitWidth: implicitHeight
                }
            }
        }
    }
}