Qt QML:窗口打开后如何显示对话框?

Qt QML:窗口打开后如何显示对话框?,qt,qml,qt5,qtquick2,Qt,Qml,Qt5,Qtquick2,在用户开始使用应用程序之前,我需要向用户显示一个模式对话框。具有对话框示例的应用程序: import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12 import QtQuick.Dialogs 1.3 Window { visible: true width: 640 height: 480 title: qsTr(

在用户开始使用应用程序之前,我需要向用户显示一个模式对话框。具有对话框示例的应用程序:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Dialogs 1.3

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button {
        text: "Show dialog"
        onClicked: profileDialog.open()
    }

    Dialog {
        id: profileDialog
        title: "Select profile"
        ColumnLayout {
            RadioButton {
                checked: true
                text: qsTr("First")
            }
            RadioButton {
                text: qsTr("Second")
            }
            RadioButton {
                text: qsTr("Third")
            }
        }
        standardButtons: StandardButton.Ok
    }

}
此示例显示单击按钮时的对话框。但我需要在应用程序启动时执行此操作。如何在打开主窗口时显示profileDialog?也许有什么信号?但我在文档中找不到此类信号。

在这些情况下,应使用以下信号:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    // ...
    Component.onCompleted: profileDialog.open()
}
窗口{
可见:正确
宽度:640
身高:480
标题:qsTr(“你好世界”)
// ...
Component.onCompleted:profileDialog.open()
}
在这些情况下,应使用信号:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    // ...
    Component.onCompleted: profileDialog.open()
}
窗口{
可见:正确
宽度:640
身高:480
标题:qsTr(“你好世界”)
// ...
Component.onCompleted:profileDialog.open()

}
感谢您提供的解决方案。我找到了另一个解决方案:onVisibleChanged:if(visible)profileDialog.open()。哪一个更好:onVisibleChanged还是Component.onCompleted?@AndreyEpifantsev在您当前的情况下,任何人都是同样有效的,对于我的代码,它只会在第一次创建窗口时执行,在您的情况下,每次窗口可见时(例如,如果它隐藏窗口,并且再次显示,信号也会被触发),这取决于你想要什么。谢谢你的解决方案。我找到了另一个解决方案:onVisibleChanged:if(visible)profileDialog.open()。哪一个更好:onVisibleChanged还是Component.onCompleted?@AndreyEpifantsev在您当前的情况下,任何人都是同样有效的,对于我的代码,它只会在第一次创建窗口时执行,在您的情况下,每次窗口可见时(例如,如果它隐藏窗口,并且再次显示,信号也会被触发),这将取决于你想要什么。