lnk
lnk

Reputation: 603

QML Window is not visible

I have got QML application and there should be a lot of dialogs. When user press ToolButton appropriate dialog should be visible so that user can modify contols of that dialog. Here is minimum code for that:

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.0
ApplicationWindow {
    visible: true
    property variant dialog: Loader{sourceComponent: wind}
    toolBar: ToolBar {
        Row {
            anchors.fill: parent
            ToolButton {
                iconSource: "1.png"
                checkable: true
                checked: false
                onClicked: dialog.visible=checked
            }
        }
    }
    Component {
            id: wind

            Window{
                visible: false
                flags: Qt.Dialog
                Button{
                    text: "hello"
               }
            }
        }
}

However when I press ToolButton dialog is not visible. What is wrong?

Upvotes: 0

Views: 2542

Answers (1)

dtech
dtech

Reputation: 49289

property variant dialog: Loader{sourceComponent: wind} - that is wrong, don't expect the element to show when declared as a property, it has to be a child of its parent component.

onClicked: dialog.visible=checked - this is wrong, you need to use the item property of the dialog to refer to the object the loader instantiates

Code that works:

ApplicationWindow {
    visible: true
    toolBar: ToolBar {
        Row {
            anchors.fill: parent
            ToolButton {
                checkable: true
                checked: false
                onClicked: dialog.item.visible = checked
            }
        }
    }

    Loader {
        id: dialog
        sourceComponent: wind
    }

    Component {
        id: wind
        Window {
            width: 100
            height: 100
            Button {
                text: "hello"
            }
        }
    }
}

Upvotes: 2

Related Questions