کیو-ام-ال: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Mshobeyri (بحث | مشارکت‌ها)
صفحه‌ای جدید حاوی «== Syntax, semantics == === Basic syntax === مثال: <syntaxhighlight lang="javascript"> import QtQuick 1.0 Rectangle { id: canv...» ایجاد کرد
برچسب: منبع‌دهی نادرست (AF)
(بدون تفاوت)

نسخهٔ ‏۱۷ مارس ۲۰۱۲، ساعت ۱۰:۱۱

Syntax, semantics

Basic syntax

مثال:

import QtQuick 1.0

 Rectangle {
     id: canvas
     width: 200
     height: 200
     color: "blue"

     Image {
         id: logo
         source: "pics/logo.png"
         anchors.centerIn: parent
         x: canvas.height / 5
     }
 }

اشیا به وسیله نوعشان(مثلث،مربع...)متمایز میشوند, که به دنبال آن یک جفت کروشه می آید، نام اشیا با یک حرف بزرگ شروع میشود. در مثال بالا، دو شی وجود دارد،یک مستطیل و فرزند آن که یک عکس میباشد. در میان کروشه ها، شما میتوانید اطلاعاتی(مثلا خصوصیات آن شی )را به اشیا نسبت دهید. خصوصیات یک شی به صورت مقدار:خصوصیت تعریف میشود. در مثال بالا میتوان دید که شی Image دارای یک خصوصیت به نام source می باشد که مقدار "pics/logo.png" به آن نسبت داده شده.خصوصیت و مقدار آن به وسیله ی یک علامت دونقطه از هم جدا میشود.

خصوصیت id هر شی میتواند یک خصوصیت ویژه و یکتا داشته باشد که به آن id گفته میشود. نسبت دادن id به اشیا این امکان را فراهم می آورد که یک شی به یک شی دیگر ارجاع پیدا کند.در مثال زیر به مستطیل اول یک id به نام "myRect" نسبت داده شده، و در مستطیل دوم خصوصیت width (عرض ) به مسطتیل اول ارجاع داده شده،به این صورت که مقدار width در مستطیل اول به پارامتر width در مستطیل دوم نیز نسبت داده می شود.

 Item {
     Rectangle {
         id: myRect
         width: 100
         height: 100
     }
     Rectangle {
         width: myRect.width
         height: 200
     }
 }

نام مقدار نسبت داده شده به خصوصیت id باید با حروف کوچک یا یک علامت شروع شود، و همچنین نمی تواند در ادامه به چز حروف انگلیسی کاراکتر دیگری (مثل اعداد و یا علائم) را شامل شود.

شیرازه ی خصوصیت

یک شیرازه ی خصوصیت مقدار یک خصوصیت را در حالتی اعلانی مشخص میکند. اگر دیگر خصوصیت ها یا دیگر مقدارها تغییر کنند.خصوصیت ها به صورت خودکار به روز میشوند.

شیرازه ی خصوصیت به صورت ضمنی در کیو-ام-ال برای زمانهایی ساخته شده است که یک خصوصیت به یک عبارت جاوا اسکریپتی نسبت داده میشود.کد کیو-ام-ال زیر از دو شیرازه ی خصوصیت برای ایجاد ارتباط بین اندازه ی مستطیل و "otherItem" استفاده کرده است.


 Rectangle {
     width: otherItem.width
     height: otherItem.height
 }

کیو-ام-ال یک کامپایلر استاندارد جاوا اسکریپت را شامل میشود، بنابراین هر عبارت معتبر در جاوا اسکریپت میتواند به عنوان یک شیرازه ی خصوصیت استفاده شود.شیرازه ها میتوانند به خصوصیات اشیا دسترسی داشته باشند،توابع را فراخوانی کنند، و حتی از اشیا تو کار جاوا اسکریپت مانند Math و Date نیز استفاده کنند.


مثال:

 Rectangle {
     function calculateMyHeight() {
         return Math.max(otherItem.height, thirdItem.height);
     }
     anchors.centerIn: parent
     width: Math.min(otherItem.width, 10)
     height: calculateMyHeight()
     color: { if (width > 10) "blue"; else "red" }
 }

حالت ها

حالت ها یک رویه برای ترکیب تغییرات به منظور اعمال خصوصیت ها در یک واحد معنایی می باشد. برای مثال یک کلید دارای حالت های "کلیک شده" و "کلیک نشده" می باشد و یا یک دفترچه تلفن باید دارای حالتهای "فقط خواندنی" و یا "قابل تغییر" باشد. هر حالت به این صورت تعریف میشود که نام خصوصیت نوشته شده و مقداری متفاوت با مقدار آن در حالت اصلی به آن خصوصیت نسبت داده میشود.


مثال: در حالت پیش فرض myRect در مکان 0،0 قرار دارد و در حالت "moved" در مکان 50,50 قرار میگیرد. و کلیک کردن با ماوس روی آن, حالت پیشفرض (0,0)را به حالت "moved" و مکان(50,50)تغییر می دهد.

 import QtQuick 1.0

 Item {
     id: myItem
     width: 200; height: 200

     Rectangle {
         id: myRect
         width: 100; height: 100
         color: "red"
     }
     states: [
         State {
             name: "moved"
             PropertyChanges {
                 target: myRect
                 x: 50
                 y: 50
             }
         }
     ]
     MouseArea {
         anchors.fill: parent
         onClicked: myItem.state = 'moved'
     }
 }

تغییر حالات می تواند با نسبت دادن یک انیمیشن به تغییر مکان انجام شود. برای مثال، اضافه کردن کد زیر به کد بالا تغییر مکان به حالت "moved" را با یک انیمیشن همراه می کند:

 transitions: [
     Transition {
         NumberAnimation { properties: "x,y"; duration: 500 }
     }
  ]

انیمیشن

انیمیشن ها در کیو-ام-ال به وسیله نسبت دادن انیمیشن به خصوصیات اشیا انجام می شود.به خصوصیاتی مانند type real, int, color, rect, point, size, and vector3d می توان انیمیشن نسبت داد.

کیو-ام-ال دارای سه نوع کلی انیمیشن است:انیمیشن های پایه ای خصوصیت ها(basic property animation) ، انتقال (transitions) و رفتار خصوصیت ها (property behaviors).

ساده ترین نوع انیمیشن انیمیشن خصوصیت هاست، که می تواند به تمام خصوصیت های لیست شده در بالا را نسبت داده شود. انیمیشن خصوصیت می تواند به عنوان یک مقدار و با کلمه کلیدی Animation به یک خصوصیت نسبت داده شود.این نوع انیمیشن به ویژه برای انیمیشن هایی که تکرار در آنها وجود دارد مفید است.

مثال زیر یک انیمیشن حجیم شدن(bouncing) می سازد. The following example creates a bouncing effect:

 Rectangle {
     id: rect
     width: 120; height: 200

     Image {
         id: img
         source: "pics/qt.png"
         x: 60 - img.width/2
         y: 0

         SequentialAnimation on y {
             loops: Animation.Infinite
             NumberAnimation { to: 200 - img.height; easing.type: Easing.OutBounce; duration: 2000 }
             PauseAnimation { duration: 1000 }
             NumberAnimation { to: 0; easing.type: Easing.OutQuad; duration: 1000 }
         }
     }
 }

fa:کیو-ام-ال