Examples and fixes for QML Window properties

Setting Window.color in QML takes effect immediately.
It was only possible to set the property at startup.
Examples demonstrate new Window property features.

Change-Id: Ic5b43d0d84371f3fe5c42223ccc98e6de27aed10
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
This commit is contained in:
Shawn Rutledge 2012-10-22 13:44:21 +02:00 committed by The Qt Project
parent e35c6a788a
commit fdcde738e5
4 changed files with 80 additions and 17 deletions

View File

@ -44,13 +44,29 @@ import QtQuick.Window 2.0
Item {
width: 320
height: 240
// It's not possible to set an Item's windowTitle. If you want to modify
// window properties, you need to explicitly create a Window.
Text {
id: text1
anchors.centerIn: parent
text: "First Window"
}
Rectangle {
border.color: "black"
color: childWindow.visible ? "green" : "yellow"
radius: 4
anchors.top: text1.bottom
anchors.horizontalCenter: text1.horizontalCenter
width: 100
height: 30
TextInput {
id: ti1
focus: true // but the modal popup will prevent input while it is open
anchors.centerIn: parent
}
}
Rectangle {
border.color: "black"
color: childWindow.visible ? "goldenrod" : "beige"
radius: height / 4
anchors.bottom: parent.bottom
anchors.right: parent.right
@ -72,16 +88,39 @@ Item {
id: childWindow
width: 320
height: 240
x: 320
y: 240
color: "green"
x: 220
y: 120
color: "beige"
title: "Second Window"
modality: Qt.ApplicationModal
flags: Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint
Text {
id: text2
anchors.centerIn: parent
text: "Second Window"
text: "Modal Frameless Stay-on-Top Window"
}
MouseArea{
anchors.fill: parent
onClicked: Qt.quit()
Text {
anchors.top: parent.top
anchors.right: parent.right
anchors.margins: 10
text: "X"
MouseArea{
anchors.fill: parent
onClicked: childWindow.visible = false
}
}
Rectangle {
border.color: "black"
radius: 4
anchors.top: text2.bottom
anchors.horizontalCenter: text2.horizontalCenter
width: 100
height: 30
TextInput {
id: ti2
focus: true
anchors.centerIn: parent
}
}
}
}

View File

@ -43,27 +43,47 @@ import QtQuick.Window 2.0
QtObject {
property var win1: Window {
width: 640
height: 480
width: 320
height: 240
x: 0
y: 0
visible: true
color: "#ccffff"
title: "First Window"
Text {
anchors.centerIn: parent
text: "First Window"
Text {
id: statusText
anchors.top: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
}
}
MouseArea {
anchors.fill: parent
onClicked: win2.visible = !win2.visible
}
}
property var win2: Window {
width: 640
height: 480
x: 640
y: 480
width: 320
height: 240
x: 220
y: 120
visible: true
color: "green"
Text {
anchors.centerIn: parent
text: "Second Window"
title: "Second Window: " + color
Rectangle {
anchors.fill: parent
anchors.margins: 10
Text {
anchors.centerIn: parent
text: "Second Window"
}
MouseArea {
anchors.fill: parent
onClicked: win2.color = "#ffffcc"
}
}
onVisibleChanged: statusText.text = "second window is " + (visible ? "visible" : "invisible")
}
}

View File

@ -2776,6 +2776,7 @@ void QQuickWindow::setColor(const QColor &color)
d->clearColor = color;
emit colorChanged(color);
d->dirtyItem(contentItem());
}
QColor QQuickWindow::color() const

View File

@ -476,6 +476,9 @@ int main(int argc, char ** argv)
if (contentItem) {
qxView = new QQuickView(&engine, NULL);
window = qxView;
// Set window default properties; the qml can still override them
QString oname = contentItem->objectName();
window->setTitle(oname.isEmpty() ? QString::fromLatin1("qmlscene") : QString::fromLatin1("qmlscene: ") + oname);
window->setFlags(Qt::Window | Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
if (options.resizeViewToRootItem)
qxView->setResizeMode(QQuickView::SizeViewToRootObject);