Düzen hatası.dikey çubuğu dikey çubuğa hizalayın .qml dosyası

0

Soru

Arkaplan: Üzerinde çalıştığım bir yan projem var, bu bir programcı olarak öğrendikçe ve büyüdükçe güncelleyeceğim "yuvarlanan" bir proje olacak. Bu proje benimle birlikte büyüyeceğinden, basit olabilecek bir guı'nin nasıl oluşturulacağını öğrenmek istedim, ama aynı zamanda gerçekten rahat hissettiğimde guı'yi gerçekten kişiselleştirme yeteneği de veriyor. Seçeneklerle boğulmuş hissettikten sonra PySide6 ve qml'ye indim ancak QML dosyasıyla ilgili bir sorunla karşılaşıyorum.

Takip ettiğim öğretici Python-QML entegrasyonudur (https://doc.qt.io/qtforpython/tutorials/qmlintegration/qmlintegration.html) ve .py ve kullanıyorum .eğitim sayfasının alt kısmında bağlantılı qml dosyaları. Bir IDE için önemliyse Pycharm kullanıyorum ve projeye QML Düzenleyici eklentisinin yanı sıra PySide6 paketi ekledim.

Sorun: Yaşadığım sorun şu ki.qml dosyası. Bazı nedenlerden dolayı, rowlayout'umu dikey ve yatay olarak ortalamak için iki boyutlu bayrakta kullanılan dikey çubuğu tanımıyor. İmlecimi dikey çubuğun üzerine getirdiğimde, virgül, parantez veya parantez gibi birden çok farklı sembolden birinin beklendiğini ancak bunun yerine ' / ' aldığını söyleyen bir ipucu alıyorum.

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, stack overflow, QT sitesindeki belgeleri her yerde kontrol ettiğimi hissediyorum, ancak bunu yaşayan başka kimseyi bulamıyorum.

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

En iyi cevabı

0

Asıl sorun bu ayardır Qt.AlignVCenter bir ColumnLayout alt öğesinde, Mizanpajlar yalnızca mizanpajlarının yönüne ortogonal hizalamayı onurlandırdığından anlam ifade etmez. Bu nedenle, dikey olarak yönlendirilmiş bir düzende dikey bir hizalama ayarlamak hiçbir şey yapmaz.

Bu durumda, örneği basitleştirdiğiniz için (özellikle tüm mizanpajlarınızın yalnızca bir alt öğesi vardır), herhangi bir mizanpaja gerçekten ihtiyacınız yoktur. Bunun yerine, columnlayout'u bir Öğeye dönüştürürdüm ve ardından Düğmeyi bunun ortasına şu şekilde tuttururdum:

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

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................