====== Layout basics ======
===== Element =====
* Structures in the QML markup language are called **elements**.
* Some elements are //visual// (e.g., images, shapes).
* A visual element is an **Item**.
* Some elements are //non-visual// (e.g., animations).
===== Item =====
* The **Item** is the basis of all //visual// elements in Qt Quick.
* Has no visual appearance itself.
* Has definitions for properties that are common across visual items:
* ''anchors'', ''clip'', ''width'', ''height'', ''opacity'', ''x'', ''y'', ''rotation'', ''scale'', ...
* The following creates an Item of size 100 pixels by 100 pixels (but it shows nothing):
import QtQuick 1.0
Item {
width: 100
height: 100
}
* ''width'' and ''height'' are **properties**.
* You can place multiple properties on the same line if you separate them with semicolons:
Item {
width: 100; height: 100
}
===== Rectangle =====
* A **Rectangle** is an Item that is painted using a solid color and an optional border.
* You can use the ''radius'' property to create rounded borders.
import QtQuick 1.0
Rectangle {
width: 100
height: 100
color: "red"
border.color: "black"
border.width: 5
radius: 10
}
===== Nesting Items =====
* You can put Items inside other Items.
* In the example below, a Rectangle is placed inside a regular (invisible) Item.
* The ''anchors.fill: parent'' line says that the Rectangle should fill its parent (i.e., the Item).
import QtQuick 1.0
Item {
width: 100
height: 100
Rectangle {
anchors.fill: parent
color: "red"
border.color: "black"
border.width: 5
radius: 10
}
}
===== Image =====
* The **Image** element allows you to add a bitmap to a scene.
* It is a good practice not to hardcode the image width and height. (Qt Quick will automatically do this job.)
import QtQuick 1.0
Item {
width: 300
height: 300
Image {
x: 30
y: 40
source:"images/spaceship.png"
}
}
* The following is identical to the above except it uses //anchors// to place the image in the dead center of the enclosing Item:
import QtQuick 1.0
Item {
width: 300
height: 300
Image {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
source:"images/spaceship.png"
}
}
===== Text and TextInput =====
* **Text** and **TextInput** items allow you to add formatted texts to a scene.
* Getting user input from TextInput will be covered later
import QtQuick 1.0
Item {
width: 100
height: 100
Text {
text: "Hello World!"
font.family: "Helvetica"
font.pixelSize: 14
color: "blue"
x: 0
y: 0
}
}
import QtQuick 1.0
Item {
width: 200
height: 100
Text {
text: "Enter your name:"
font.family: "Helvetica"
font.pixelSize: 14
color: "blue"
x: 0
y: 0
}
TextInput {
text: "Default Text"
font.family: "Helvetica"
font.pixelSize: 14
color: "red"
x: 10
y: 20
focus: true
}
}
===== Naming things =====
* Elements can be named using the ''id'' property.
* You often need to name an element so you can refer to it from outside itself.
...
Text {
id: myMessage
text: "Hello World!"
font.family: "Helvetica"
font.pixelSize: 14
color: "blue"
x: 0
y: 0
}
Image {
id: spaceshipImage
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
source:"images/spaceship.png"
}
...
--------------------------------------------------------------
====== Resources ======
* {{:qt-quick-for-designers-1:images.zip|}}
* All source code is subject to this [[copyright header|copyright]].