Ошибка с компоновкой.выравнивание вертикальной полосы в файле vertical bar .qml

0

Вопрос

Предыстория: У меня есть побочный проект, над которым я работаю, это будет "скользящий" проект, который я буду обновлять по мере того, как буду учиться и расти как программист. Поскольку этот проект будет развиваться вместе со мной, я хотел узнать, как создать графический интерфейс, который может быть простым, но также дает мне возможность по-настоящему настроить графический интерфейс, как только я действительно почувствую себя комфортно с ним. После того, как я почувствовал себя перегруженным опциями, я остановился на PySide6 и QML, но у меня возникла проблема с файлом QML.

Учебник, которому я следую,-это интеграция Python и QML (https://doc.qt.io/qtforpython/tutorials/qmlintegration/qmlintegration.html) и я использую файлы .py и .qml, связанные в нижней части страницы учебника. Для IDE, если это имеет значение, я использую Pycharm, и в проект добавлен пакет PySide6, а также плагин редактора QML.

Проблема: Проблема, с которой я сталкиваюсь, связана с .файл qml. По какой-то причине он не распознает вертикальную полосу, используемую в двумерном флаге для центрирования моей разметки по вертикали и горизонтали. Когда я навожу курсор на вертикальную полосу, я получаю подсказку о том, что ожидался один из нескольких различных символов, таких как запятые, круглые скобки или фигурные скобки, но вместо этого получил"|".

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, но не могу найти никого, кто испытывал это.

qml qt
2021-11-21 02:11:10
1

Лучший ответ

0

Основная проблема заключается в том, что настройка Qt.AlignVCenter в дочернем элементе столбца вывод не имеет смысла, так как макеты выполняют выравнивание только перпендикулярно направлению их расположения. Таким образом, установка вертикального выравнивания на вертикально ориентированном макете ничего не даст.

В этом случае, поскольку вы упростили пример (в частности, у всех ваших макетов есть только один дочерний элемент), вам вообще не нужны никакие макеты. Вместо этого я бы преобразовал ColumnLayout в элемент, а затем закрепил кнопку в его центре следующим образом:

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)
        }
    }
}
2021-11-22 16:03:02

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................