Qt 无法将文本字段设置为在QML中填充宽度
我正在YouTube上学习教程,该用户设置文本字段以填充行布局的宽度。然而,它似乎对我不起作用。我试着在复选框上使用Layout.fillWidth,它似乎工作得很好,但它似乎不想在文本字段上工作。这是我的密码: main.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
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"
}
}