【QML-对话框】

QML编程指南 VX:hao541022348

  • 弹出类
    • Dialog
    • Drawer
    • FileDialog文件对话框
    • FontDialog字体对话框
    • ColorDialog 颜色对话框
    • MessageDialog 消息提示框

弹出类

Dialog

对话框是一种弹出式对话框,主要用于短期任务和与用户的简短交流。与ApplicationWindow和Page类似,Dialog被组织成三个部分:header、contenttem和footer。
【QML-对话框】_第1张图片
按钮将根据用户的系统平台以适当的顺序放置。

标志 含义
Dialog.Ok 用AcceptRole定义的“OK”按钮。
Dialog.Open 用AcceptRole定义的“打开”按钮。
Dialog.Save 用AcceptRole定义的“保存”按钮。
Dialog.Cancel 用RejectRole定义的“Cancel”按钮。
Dialog.Close 用RejectRole定义的“关闭”按钮。
Dialog.Discard 由DestructiveRole定义的“废弃”或“不保存”按钮,取决于平台。
Dialog.Apply 由ApplyRole定义的“应用”按钮。
Dialog.Reset 用ResetRole定义的“重置”按钮。
Dialog.RestoreDefaults 使用ResetRole定义的“恢复默认值”按钮。
Dialog.Help 用HelpRole定义的“帮助”按钮。
Dialog.SaveAll 用AcceptRole定义的“Save All”按钮。
Dialog.Yes 用YesRole定义的“Yes”按钮。
Dialog.YesToAll 用YesRole定义的“Yes to All”按钮。
Dialog.No NoRole定义的“No”按钮。
Dialog.NoToAll NoRole定义的“不接受所有”按钮。
Dialog.Abort 用RejectRole定义的“Abort”按钮。
Dialog.Retry 用AcceptRole定义的“重试”按钮。
Dialog.Ignore 用AcceptRole定义的“Ignore”按钮。
Dialog.NoButton 无效的按钮。
  Button{
      x: 270
      y: 184
      text: "点击";
      anchors.horizontalCenter: parent.horizontalCenter
      anchors.verticalCenter: parent.verticalCenter

      onClicked: {
          dialog.open()
      }
  }

  Dialog {
      id: dialog
      title: "Title"
      standardButtons: Dialog.Ok | Dialog.Cancel

      onAccepted: console.log("Ok clicked")
      onRejected: console.log("Cancel clicked")
  }

模态对话框
模态对话框阻止输入到对话框下的其他内容。打开模态对话框时,用户必须完成与对话框的交互并关闭它,然后才能访问同一窗口中的任何其他内容。其实就是设置的 modal 属性就好了

  Dialog {
      id: dialog
      modal: true
      standardButtons: Dialog.Ok
  }

非模态的对话框
非模态对话框是独立于对话框周围的其他内容进行操作的对话框。当打开一个非模态对话框时,用户可以在同一个窗口中与对话框和其他内容进行交互。

  Dialog {
      id: dialog
      modal: false
      standardButtons: Dialog.Ok
  }

Drawer

抽屉可以放置在内容项的四个边缘中的任何一个。下面的抽屉靠在窗口的左边缘。
从窗口左侧“拖”出抽屉,打开抽屉。

** 示例一 **
【QML-对话框】_第2张图片

  import QtQuick 2.14
  import QtQuick.Controls 2.14

  ApplicationWindow {
      id: window
      visible: true

      Drawer {
          id: drawer
          width: 0.66 * window.width
          height: window.height

          Label {
              text: "左边抽屉内容"
              anchors.centerIn: parent
          }
      }
  }

** 示例二 **
【QML-对话框】_第3张图片

  import QtQuick 2.14
  import QtQuick.Controls 2.14

  ApplicationWindow {
      id: window
      width: 200
      height: 228
      visible: true
      Drawer {
          id: drawer
          width: 0.66 * window.width
          height: window.height
      }
      Label {
          id: content
          text: "Aa"
          font.pixelSize: 96
          anchors.fill: parent
          verticalAlignment: Label.AlignVCenter
          horizontalAlignment: Label.AlignHCenter
          transform: Translate {
              x: drawer.position * content.width * 0.33
          }
      }
  }

FileDialog文件对话框

  import QtQuick 2.2
  import QtQuick.Dialogs 1.0

  FileDialog {
      id: fileDialog
      title: "Please choose a file"
      folder: shortcuts.home
      onAccepted: {
          console.log("You chose: " + fileDialog.fileUrls)
          Qt.quit()
      }
      onRejected: {
          console.log("Canceled")
          Qt.quit()
      }
      Component.onCompleted: visible = true
  }

https://blog.csdn.net/qq_43680827/article/details/130170675

FontDialog字体对话框

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

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

    Button{
        id:button
        text: "字体选择"

        anchors.centerIn: parent

        onClicked: {
            fontDialog.open();
        }

        FontDialog {
              id: fontDialog
              title: "Please choose a font"
              font: Qt.font({ family: "Arial", pointSize: 24, weight: Font.Normal })
              onAccepted: {
                  console.log("You chose: " + fontDialog.font)
                  button.font = fontDialog.font;
              }
              onRejected: {
                  console.log("Canceled")
              }
          }
    }
}

ColorDialog 颜色对话框

  import QtQuick 2.2
  import QtQuick.Dialogs 1.0

  ColorDialog {
      id: colorDialog
      title: "Please choose a color"
      onAccepted: {
          console.log("You chose: " + colorDialog.color)
          Qt.quit()
      }
      onRejected: {
          console.log("Canceled")
          Qt.quit()
      }
      Component.onCompleted: visible = true
  }

MessageDialog 消息提示框

【QML-对话框】_第4张图片

** 示例一 **
【QML-对话框】_第5张图片

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

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

    Button {
        id: button1
        x: 270
        y: 335
        text: qsTr("打开消息对话框")

        onClicked: {
            messageDialog.open();
        }

        MessageDialog {
            id: messageDialog
            title: "标题"
            icon: StandardIcon.Critical
            text: "文本内容"
            
            
            onAccepted: {
                console.log("And of course you could only agree.")
            }
        }
    }
}

** 示例二 **
【QML-对话框】_第6张图片

MessageDialog {
      title: "Overwrite?"
      icon: StandardIcon.Question
      text: "file.txt already exists.  Replace?"
      detailedText: "To replace a file means that its existing contents will be lost. " +
          "The file that you are copying now will be copied over it instead."
      standardButtons: StandardButton.Yes | StandardButton.YesToAll |
          StandardButton.No | StandardButton.NoToAll | StandardButton.Abort
      Component.onCompleted: visible = true
      onYes: console.log("copied")
      onNo: console.log("didn't copy")
      onRejected: console.log("aborted")
  }

你可能感兴趣的:(#,Qml,qt)