背景:我有一个附带的项目,我正在做这个项目,这将是一个“滚动”的项目,我将在我作为一个程序员学习和成长的过程中进行更新。由于这个项目将与我一起成长,我想学习如何创建一个可以简单的GUI,但也使我能够真正定制GUI,一旦我真的感到舒服。在被选项淹没之后,我选择了PySide6和QML,但是我遇到了QML文件的问题。
下面的教程是Python集成(https://doc.qt.io/qtforpython/tutorials/qmlintegration/qmlintegration.html),我正在使用教程页面底部链接的.py和.qml文件。对于IDE,如果这很重要,我将使用Pycharm,并将PySide6包添加到项目和QML插件中。
Problem:我遇到的问题是.qml文件。出于某种原因,它没有识别在二维标志中使用的垂直条形线,以使我的RowLayout垂直和水平地居中。当我将光标悬停在垂直栏上时,我会得到一个提示,说明需要使用逗号、括号或大括号等多个不同符号中的一个,但却得到了“x”。
ColumnLayout {
id: rightcolumn
spacing: 2
Layout.columnSpan: 1
Layout.preferredWidth: 400
Layout.preferredHeight: 400
Layout.fillWidth: true
RowLayout {
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Button {
id: red
text: "Red"
highlighted: true
Material.accent: Material.Red
onClicked: {
leftlabel.color = bridge.getColor(red.text)
}
}
}我觉得我已经检查了到处都是Reddit,堆栈溢出,QT站点上的文档,但是找不到其他经历过这种情况的人。
发布于 2021-11-22 16:03:02
主要问题是将Qt.AlignVCenter设置在ColumnLayout的子类中是没有意义的,因为布局只尊重与布局方向正交的对齐方式。因此,在垂直方向的布局上设置垂直对齐不会起任何作用。
在这种情况下,由于简化了示例(具体来说,所有布局只有一个子),所以根本不需要任何布局。相反,我会将ColumnLayout转换为一个项,然后按如下方式将Button锚定在它的中心:
Item {
id: rightcolumn
Layout.columnSpan: 1
Layout.preferredWidth: 400
Layout.preferredHeight: 400
Layout.fillWidth: true
Button {
id: red
anchors.centerIn: parent
text: "Red"
highlighted: true
Material.accent: Material.Red
onClicked: {
leftlabel.color = bridge.getColor(red.text)
}
}
}https://stackoverflow.com/questions/70051302
复制相似问题