Qt 无法将文本字段设置为在QML中填充宽度

Qt 无法将文本字段设置为在QML中填充宽度,qt,qml,qt5,qt-quick,Qt,Qml,Qt5,Qt Quick,我正在YouTube上学习教程,该用户设置文本字段以填充行布局的宽度。然而,它似乎对我不起作用。我试着在复选框上使用Layout.fillWidth,它似乎工作得很好,但它似乎不想在文本字段上工作。这是我的密码: main.qml: import QtQuick 2.9 import QtQuick.Controls 2.2 ApplicationWindow { visible: true; width: 640; height: 480; title: qs

我正在YouTube上学习教程,该用户设置文本字段以填充行布局的宽度。然而,它似乎对我不起作用。我试着在复选框上使用Layout.fillWidth,它似乎工作得很好,但它似乎不想在文本字段上工作。这是我的密码:

main.qml:

import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow
{
    visible: true;
    width: 640;
    height: 480;
    title: qsTr("Tabs");

    ToDoList
    {
        anchors.centerIn: parent;
    }
}
ToDoList.qml:

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

Frame
{
    ListView
    {
        // Using implicit width and height allows the frame to automatically scale to the size of the list view
        implicitWidth: 250
        implicitHeight: 250
        clip: true
        model: 100
        delegate: RowLayout {
            width: parent.width

            CheckBox {}
            TextField
            {
                Layout.fillWidth: true
            }
        }
    }
}
这是我的屏幕截图

我做错了什么

我不知道这是否与此有关,但我制作了一个Qt Quick应用程序-滑动,而不是Qt Quick Controls 2应用程序,因为该选项对我不可用。提前感谢您的帮助

编辑:我已经写了一步一步的说明来复制下面的问题

文件>新文件或项目 在新窗口中,确保选择了应用程序,然后单击Qt快速应用程序-滑动并按选择 为项目设置任意名称,然后单击“下一步” 将生成系统设置为qmake并单击Next 将所需的最小Qt版本设置为Qt 5.9,将Qt快速控制样式设置为Material Dark,然后单击Next 选择桌面Qt 5.12.0 MSVC2017 64位作为工具包,然后单击下一步 将选项设置为无版本控制,然后单击“完成”

从项目窗格中删除Page1Form.ui.qml和Page2Form.ui.qml

将main.qml的内容替换为: 在根项目文件上单击鼠标右键,然后单击“添加新” 在新窗口中,确保选择了Qt,然后单击QML文件Qt Quick 2并按选择 将文件命名为ToDoList,然后单击Next 添加到项目qml.qrc前缀:/n然后将选项设置为无版本控制,然后单击“完成” 将ToDoList.qml的内容替换为: 运行项目
宽度设置正确。问题在于TextField样式。您可以通过如下设置背景来检查它

TextField
{
    Layout.fillWidth: true
    background: Rectangle {
        color: "red"
    }
}

或者只需开始在有布局和无布局的字段中键入。fillWidth:true

您可以显示您指出的错误的图像,在我的情况下,我已经尝试了您的代码,但我没有发现问题:@eyllanesc这是我的项目看起来的样子:显示的代码不会生成您显示的内容,正如我从图像中观察到的,框架位于另一个组件内,您可以花时间提供一个正确的框架,我认为框架的宽度比ListView宽。这就是为什么我认为TextField并没有占用所有的空间,但事实上是的,因为ListView的宽度没有链接到框架的宽度添加宽度:parent.width在ListView:ListView的内部{width:parent.width。。。
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

Frame
{
    ListView
    {
        // Using implicit width and height allows the frame to automatically scale to the size of the list view
        implicitWidth: 250
        implicitHeight: 250
        clip: true
        model: 100
        delegate: RowLayout {
            width: parent.width

            CheckBox {}
            TextField
            {
                Layout.fillWidth: true
            }
        }
    }
}
TextField
{
    Layout.fillWidth: true
    background: Rectangle {
        color: "red"
    }
}