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

تخطيطات النماذج

أنشئ بسهولة مناطق تفاعل جذابة باستخدام تخطيطات نماذج كيريغامي

تسهل مكونات Kirigami.FormLayout عليك إنشاء نماذج تتوافق مع إرشادات واجهة المستخدم البشرية لكيدي. وهي مثالية لحوارات الإعدادات ولمجموعات كبيرة من عناصر التحكم وحقول الإدخال المرتبطة ببعضها البعض.

عند توفير مساحة كافية، ستشغل تخطيطات النموذج عمودين. سيشغل العمود الأيسر باللصائق المقدمة للمكونات الفرعية للنموذج، بينما سيشغل الأيمن بالمكونات الفرعية نفسها. في النوافذ محدودة المساحة (أو على الأجهزة المحمولة)، ستتكون النماذج من عمود رأسي واحد مع وضع لصائق المكونات الفرعية فوق المكون الخاص بها.

نموذج بسيط

مكونات Kirigami.FormLayout مشابهة في الاستخدام لمكونات QtQuick Layout مثل ColumnLayout أو RowLayout. ستُرتّب المكونات الفرعية آليًا وفقًا للحجم المتاح لتخطيط النموذج.

للمكونات الفرعية لـ Kirigami.FormLayout خاصية باسم Kirigami.FormData.label. تتيح لك هذه الخاصية تعيين اللصيقة التي ستُقدم للمكون الفرعي المعني.

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as Controls
import org.kde.kirigami as Kirigami

Kirigami.ApplicationWindow {
    pageStack.initialPage: Kirigami.Page {

        Kirigami.FormLayout {
            anchors.fill: parent

            Controls.TextField {
                Kirigami.FormData.label: "TextField 1:"
            }
            Controls.TextField {
                Kirigami.FormData.label: "TextField 2:"
            }
            Controls.TextField {
                Kirigami.FormData.label: "TextField 3:"
            }
        }
    }
}
تخطيط نموذج بسيط في وضع سطح المكتب

تخطيط نموذج بسيط في وضع سطح المكتب

الأقسام والفواصل

يمكن أيضًا تقسيم تخطيطات النموذج إلى أقسام. تعيين مكان بدء القسم سهل كتعيين خاصية Kirigami.FormData.isSection لمكون فرعي إلى true. سيوفر هذا للمكون هامشًا إضافيًا في الأعلى لتحديد بداية القسم الجديد.

مكونات Kirigami.Separator هي الأنسب لبدء أقسام جديدة. تُستخدم الفواصل لرسم خط أفقي رفيع، لتحديد نهاية القسم. إذا كنت تفضل عدم رسم خط بين الأقسام، يمكنك استخدام خاصية QML قياسية Item. بدلاً من ذلك، يمكنك استخدام خاصية Kirigami.FormData.isSection على أي مكون آخر.

ومع ذلك، هذا غير موصى به. على المكونات حيث Kirigami.FormData.isSection مضبوط على true، سيُعرض نص اللصيقة المقدم لخاصية Kirigami.FormData.label لهذا المكون كنص رأس القسم.

نص الرأس هذا أكبر من نص اللصيقة العادي، ويمنح المستخدمين إشارة بصرية جميلة عن مضمون قسم تخطيط النموذج.

Kirigami.FormLayout {
    anchors.fill: parent

    Controls.TextField {
        Kirigami.FormData.label: "TextField 1:"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 2:"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 3:"
    }
    Kirigami.Separator {
        Kirigami.FormData.isSection: true
        Kirigami.FormData.label: "New Section!"
    }
    ColumnLayout {
        Kirigami.FormData.label: "Radio buttons"
        Controls.RadioButton {
            text: "Radio 1"
            checked: true
        }
        Controls.RadioButton {
            text: "Radio 2"
        }
        Controls.RadioButton {
            text: "Radio 3"
        }
    }
    Item {
        Kirigami.FormData.isSection: true
        Kirigami.FormData.label: "Another Section! (lineless though)"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 4:"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 5:"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 5:"
    }
}
تخطيط نموذج بأقسام

تخطيط نموذج بأقسام

فرض تخطيط سطح مكتب أو هاتف محمول

إذا كنت تفضل أن يبقى تخطيط النموذج ثابتًا بغض النظر عن بيئة تطبيقك، فيمكنك استخدام خاصية wideMode لمكون Kirigami.FormLayout:

  • عند ضبطه على true، يُنظّم تخطيط النموذج في تخطيط شاشة عريضة محسّن لسطح المكتب (عمود مزدوج)
  • عند ضبطه على false، يُنظّم تخطيط النموذج في تخطيط هاتف محمول (عمود مفرد)
Kirigami.FormLayout {
    anchors.fill: parent
    wideMode: false

    Controls.TextField {
        Kirigami.FormData.label: "TextField 1:"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 2:"
    }
    Controls.TextField {
        Kirigami.FormData.label: "TextField 3:"
    }
}
تخطيط نموذج بتخطيط هاتف محمول مفروض

تخطيط نموذج بتخطيط هاتف محمول مفروض

محاذاة لصائقك

توجد حالات تريد فيها تعيين لصيقة لمكونات تحتوي على أكثر من سطر أو لقائمة مكونات. يمكن تحقيق ذلك بوضع Kirigami.FormData.label في ColumnLayout، كما قد لاحظت في الأقسام والفواصل. مبدئيًا، تُوضع اللصيقة في المركز العمودي للتخطيط، وهو أمر غير مرغوب دائمًا. يمكننا تغيير ذلك بمساعدة Kirigami.FormData.labelAlignment.

Kirigami.FormLayout {
    anchors.fill: parent

    ColumnLayout {
        Kirigami.FormData.label: "This is a label:"
        Kirigami.FormData.labelAlignment: Qt.AlignTop

        Controls.Label {
            text: "This is some rather long text \nthat should elide to multiple lines \nto show how the label gets aligned."
            elide: Text.elideLeft
        }
    }
}
تخطيط نموذج بلصيقة محاذاة للأعلى

تخطيط نموذج بلصيقة محاذاة للأعلى

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

لصيقة التعليق تُحاذى للأعلى فقط عندما يحتوي مكونها المقابل على أكثر من سطر

لصيقة التعليق تُحاذى للأعلى فقط عندما يحتوي مكونها المقابل على أكثر من سطر

يمكننا فعل شيء مشابه لهذا باستخدام عامل ثلاثي في JavaScript:

Kirigami.FormLayout {
    anchors.fill: parent

    ColumnLayout {
        Kirigami.FormData.label: "This is a label:"
        Kirigami.FormData.labelAlignment: labelText.text.lineCount > 1 ? Qt.AlignTop : Qt.AlignVCenter

        Controls.Label {
            id: labelText
            text: "This is some rather long text \nthat should elide to a new line \nso it appears below the Form Label."
            elide: Text.elideLeft
        }
    }
}