Skip to main content
تخط المحتوى

البطاقات

تعمل البطاقة كنظرة عامة ونقطة دخول لمعلومات أكثر تفصيلاً ويمكن أن توفر وصولاً مباشرًا إلى أهم إجراءات عنصر ما.

تُستخدم أنواع Kirigami AbstractCard و Card لتنفيذ مكون البطاقة الشائع المستخدم على العديد من منصات الجوال والويب. يمكن استخدام البطاقات لعرض مجموعة من المعلومات أو الإجراءات بطريقة جذابة ومميزة.

يقدم Kirigami أيضًا 3 أنواع من العروض و الموضعات لمساعدتك في تقديم بطاقاتك بتخطيطات جميلة ومستجيبة.

AbstractCard

Kirigami.AbstractCard هو أبسط أنواع البطاقات. إنه مجرد مستطيل بظل، يمكن أن يحتوي على أي Item بداخله. يمكنه أيضًا أن تحتوي Items مخصصة لخصائص header أو footer. في هذه الحالة، Kirigami.Heading هو header الخاص به و Controls.Label هو contentItem للبطاقة.

Kirigami.AbstractCard {
    Layout.fillHeight: true
    header: Kirigami.Heading {
        text: qsTr("AbstractCard")
        level: 2
    }
    contentItem: Controls.Label {
        wrapMode: Text.WordWrap
        text: "..."
    }
}
لقطة شاشة لبطاقة Abstract Card، زر مستطيل بسيط بنص محاذٍ إلى اليسار

بطاقة

ترث Kirigami.Card من AbstractCard وتوفر المزيد من الميزات مباشرة. ترث البطاقات نفس header و footer من Abstract Card، لكن يُشجع على استخدام banner ومجموعة من Kirigami.Action في مجموعة actions بدلاً من ذلك.

Kirigami.Card {
    actions: [
        Kirigami.Action {
            text: qsTr("Action1")
            icon.name: "add-placemark"
        },
        Kirigami.Action {
            text: qsTr("Action2")
            icon.name: "address-book-new-symbolic"
        },
        // ...
    ]
    banner {
        source: "../banner.jpg"
        title: "Title Alignment"
        // يمكن وضع العنوان في اللافتة
        titleAlignment: Qt.AlignLeft | Qt.AlignBottom
    }
    contentItem: Controls.Label {
        wrapMode: Text.WordWrap
        text: "My Text"
    }
}
لقطة شاشة لبطاقة كاملة مع خلفية لافتة خلف عنوانها، وخلفية بيضاء خلف نصها، وإجراءين مع أيقونات وقائمة همبرغر في الأسفل

CardsLayout

يكون Kirigami.CardsLayout أكثر فائدة عندما لا تكون البطاقات المعروضة منشأة بواسطة نموذج أو تكون منشأة بواسطة نموذج يحتوي دائمًا على عدد قليل جدًا من العناصر. تُعرض كشبكة من عمودين تبقى في المنتصف إذا كان التطبيق واسعًا جدًا، أو تصبح عمودًا واحدًا إذا لم تكن هناك مساحة كافية لعمودين، مثل شاشة الهاتف المحمول.

يمكن توجيه البطاقة أفقيًا اختياريًا. في هذه الحالة، ستكون أعرض من طولها، وتكون أنسب لوضعها في ColumnLayout. إذا كان لا بد من وضعها في CardsLayout، فسيكون لها maximumColumns بقيمة 2 مبدئيًا.

ColumnLayout {
    Kirigami.CardsLayout {
        Kirigami.Card {
            contentItem: Controls.Label {
                wrapMode: Text.WordWrap
                text: "My Text2"
            }
        }
        Kirigami.AbstractCard { 
            contentItem: Controls.Label {
                wrapMode: Text.WordWrap
                text: "My Text"
            }
        }
        Kirigami.Card {
            headerOrientation: Qt.Horizontal
            contentItem: Controls.Label {
                wrapMode: Text.WordWrap
                text: "My Text2"
            }
        }
    }
}
لقطة شاشة لـ CardsLayout تظهر بطاقتين جنبًا إلى جنب في اتجاه عمودي فوق بطاقة في اتجاه أفقي، جميعها بمكونات مختلفة مستخدمة

CardsListView

Kirigami.CardsListView هو عرض قائمة يمكن استخدامه مع مكونات AbstractCard.

سيقوم CardsListView بتمديد البطاقات الفرعية إلى عرضه الخاص. لذلك يجب استخدام هذا المكون فقط مع البطاقات التي ستبدو جيدة بأي حجم أفقي. لا يُنصح باستخدام مكون Card داخله، إلا إذا كان لديه Qt.Horizontal كخاصية headerOrientation.

Kirigami.CardsListView {
    id: view
    model: 100

    delegate: Kirigami.AbstractCard {
        //ملاحظة: لا تضع Layout كـ contentItem أبدًا لأنه سيسبب حلقات ربط
        contentItem: Item {
            implicitWidth: delegateLayout.implicitWidth
            implicitHeight: delegateLayout.implicitHeight
            GridLayout {
                id: delegateLayout
                anchors {
                    left: parent.left
                    top: parent.top
                    right: parent.right
                    //هام: لا تضع الهامش السفلي أبدًا
                }
                rowSpacing: Kirigami.Units.largeSpacing
                columnSpacing: Kirigami.Units.largeSpacing
                columns: width > Kirigami.Units.gridUnit * 20 ? 4 : 2
                Kirigami.Icon {
                    source: "applications-graphics"
                    Layout.fillHeight: true
                    Layout.maximumHeight: Kirigami.Units.iconSizes.huge
                    Layout.preferredWidth: height
                }
                Kirigami.Heading {
                    level: 2
                    text: qsTr("Product ")+ modelData
                }
                Controls.Button {
                    Layout.alignment: Qt.AlignRight
                    Layout.columnSpan: 2 
                    text: qsTr("Install")
                }
            }
        }
    }
}

لقطة شاشة لـ CardsListView، وهي قائمة عمودية بسيطة من البطاقات في الوضع الأفقي