QMLを使用してListView内にLoader経由でQMLコンポーネントをロードしようとしていますが、理想としている挙動になりません。

**実行環境:**  
Qt Creator 10.0.1  
Based on Qt 6.4.3 (MSVC 2019, x86_64)  
ビルド日時: May 4 2023 01:13:52  
リビジョン d2b3c31e04

まず、現在の表示イメージは下図です。  
各パラメータの名前と説明の下にX,Yの入力部が表示されます。  
この表示の、X,Y入力部がLoaderでロードされる部分にあたります。  
[![画像の説明をここに入力](https://i.stack.imgur.com/rLy4a.png)](https://i.stack.imgur.com/rLy4a.png)

問題は2点あります。  
① ロードされるQMLの高さについて以下の様な警告が出ています。  
`qrc:/qt-
project.org/imports/QtQuick/NativeStyle/controls/DefaultTextField.qml:49:17:
QML TextField: (StyleItem) implicit height is smaller than minimum height!`  
後述するソース内の、TextField部で明示的にimplicitHeightをminimumHeightより大きく設定してみたりもしましたが、変わらず実行時に警告が出ます。

② X,Yの入力部が表示させたい枠 (グレーの枠) からはみ出してしまっています。

Loaderを使用している側のコードは以下。

```

    Rectangle {
        color: "#e7e7e7"
        Layout.fillHeight: true
        Layout.preferredWidth: _window.width * 0.3
    
        ListView {
            id: _paramList
            anchors.fill: parent
            clip: true
            highlight: Rectangle {
                color: "#9cb7d9"
            }
            delegate: Component {
                Rectangle {
                    id: _propertyRect
                    anchors.left: parent.left
                    anchors.right: parent.right
                    color: "#c6c6c6"
                    border.color: "#2e2e2e"
                    height: childrenRect.height
    
                    Text {
                        id: _propName
                        text: modelData.name
                        anchors.top: parent.top
                        anchors.left: parent.left
                        anchors.right: parent.right
                        anchors.topMargin: 5
                        anchors.rightMargin: 5
                        anchors.leftMargin: 5
                    }
    
                    Text {
                        id: _propDescription
                        anchors.top: _propName.bottom
                        anchors.left: parent.left
                        anchors.right: parent.right
                        anchors.topMargin: 5
                        anchors.rightMargin: 10
                        anchors.leftMargin: 10
                        wrapMode: Text.Wrap
                        text: modelData.description
                    }
    
                    Loader {
                        id: _loader
                        anchors.top: _propDescription.bottom
                        anchors.left: parent.left
                        anchors.right: parent.right
                        anchors.topMargin: 5
                        anchors.rightMargin: 10
                        anchors.leftMargin: 10
                        Component.onCompleted: {
                            let url = _context.get_guipart_url(modelData);
                            _loader.setSource(url);
                        }
                        onLoaded: {
                            console.log(_loader.item.height);
                        }
                    }
                }
            }
        }
    }
    
```

そして、Loaderで読み込まれるQMLの一例は以下です。

```

    import QtQuick
    import QtCore
    import QtQuick.Window
    import QtQuick.Layouts
    import QtQuick.Controls 6.3
    import QtQuick.Dialogs
    import omcv.basic
    
    Item {
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        implicitHeight: childrenRect.height
    
        Point2i {
            id: _context
        }
    
        Rectangle {
            color: "transparent"
            anchors.top: parent.top
            anchors.left: parent.left
            anchors.right: parent.right
            implicitHeight: childrenRect.height
    
            MouseArea {
                anchors.fill: parent
                onClicked: {
                    console.log("Point2i onClicked")
                    _context.on_clicked();
                }
            }
    
            RowLayout {
                anchors.top: parent.top
                anchors.left: parent.left
                anchors.right: parent.right
                anchors.rightMargin: 5
                anchors.leftMargin: 5
                spacing: 15
    
                Text {
                    text: "X"
                }
                TextField {
                    Layout.fillWidth: true
                }
                Text {
                    text: "Y"
                }
                TextField {
                    Layout.fillWidth: true
                }
            }
        }
    }
    
```

元々は_propName, _propDescription, _loaderはColumnLayoutで配置していましたが  
色々試しているうちに今はこのようになってしまっています。  
可能ならColumnLayoutで配置したいです。

さらに、今はすべて同じQMLを読み込んでいますが、本来は各パラメータで読み込まれるQMLは異なるようになります。その際、QMLコンポーネントの高さはそれぞれ異なる想定の為、Loaderに固定高さを指定したくありません。

ご教示いただけますと幸いです。
CC BY-SA 4.0
2023-07-29T16:17:04.503
95799
2023-07-30T05:56:25.247
2023-07-30T05:56:25.247
3060
53943
question
c++ qt
QMLのListView内でLoaderを使用して読み込んだコンポーネントのレイアウトが崩れる