在 QML 中使用对话框

Posted

技术标签:

【中文标题】在 QML 中使用对话框【英文标题】:Using dialogs in QML 【发布时间】:2014-05-26 16:42:39 【问题描述】:

如果在某个时刻我需要通过调用对话框窗口或类似的东西来获取用户输入怎么办。使用 QML 实现这一点的最佳方法是什么? js中有prompt的类似物吗?

【问题讨论】:

您的目标是台式机、手机还是 iPad 类型的设备? 这是一个相当广泛的问题,但我认为使用加载器的方法之一会起作用。 qt-project.org/wiki/QML-Application-Structuring-Approaches 【参考方案1】:

您可以使用自 Qt 5.3 起提供的Dialog,并根据需要对其进行自定义。 确保您已安装并运行此版本。

Here你可以找到例子。

另外,看看我准备的小例子:

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Dialogs 1.2

ApplicationWindow 
    visible: true
    width: 320
    height: 240
    title: qsTr("Custom Dialog")

    Dialog 
        id: customDialog
        title: "Custom Dialog in QML/Qt 5.3"
        standardButtons: StandardButton.Ok | StandardButton.Cancel

        Column 
            anchors.fill: parent
            Text 
                text: "Here goes all your custom elements..."
            
            TextInput 
                id: edtInput
                text: "Input text"
            
        

        onButtonClicked: 
            if (clickedButton==StandardButton.Ok) 
                console.log("Accepted " + clickedButton)
                lblResults.text += edtInput.text
             else 
                console.log("Rejected" + clickedButton)
            
        
    
    Column 
        anchors.fill: parent

        Button 
            text: qsTr("Call Custom dialog")
            onClicked: customDialog.open()
        

        Text 
            id: lblResults
            text: qsTr("Results: ")
        
    

【讨论】:

实际上,对话框组件甚至在 5.3 之前就可用,尽管处于实验状态。请参阅顶部的行Since: Qt 5.2 示例链接已失效。 stuff.mit.edu/afs/athena/software/texmaker_v5.0.2/qt57/doc/… 工作 @PΞDROLUZ 感谢您的关注。已更新链接。

以上是关于在 QML 中使用对话框的主要内容,如果未能解决你的问题,请参考以下文章

正确关闭 qml 对话框

Qt:Qml:创建对话框时关注文本字段

QML入门到进阶

QML Webview 使用 x-offset 呈现 SELECT 元素

QML FileDialog 问题

QtQuick/Qml自定义控件(3)-自定义对话框