Qt Quick - Popup

news2024/12/26 10:36:36

Qt Quick - Popup使用总结

  • 一、概述
  • 二、Popup 的布局
  • 三、弹出分级
  • 四、弹出定位
  • 五、定制化

一、概述

Popup是类似弹出式用户界面控件的基本类型。它可以与Window或ApplicationWindow一起使用。

  import QtQuick.Window 2.2
  import QtQuick.Controls 2.12

  ApplicationWindow {
      id: window
      width: 400
      height: 400
      visible: true

      Button {
          text: "Open"
          onClicked: popup.open()
      }

      Popup {
          id: popup
          x: 100
          y: 100
          width: 200
          height: 300
          modal: true
          focus: true
          closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
      }
  }

为了确保场景中其他项目上方显示一个弹出框,建议使用ApplicationWindow。

ApplicationWindow还提供背景调光效果。

Popup不提供自己的布局,这就要求我们自己定位其内容,例如通过创建RowLayout或ColumnLayout。
声明为弹出框子元素的项自动成为弹出框内容项的父元素。动态创建的项需要显式地赋给contentItem

二、Popup 的布局

下图展示了窗口中弹出框的布局:
在这里插入图片描述

弹出框的implicitWidth和implicittheight通常是基于背景和内容项的隐式大小加上任何内嵌和内边距。当没有明确指定宽度或高度时,这些属性决定了弹出框的大小。

内容项的几何形状由内边距决定。下面的例子在弹出框的边界和内容之间保留了10px的内边距:

  Popup {
      padding: 10

      contentItem: Text {
          text: "Content"
      }
  }

背景元素会填满整个弹出框的宽度和高度,除非为其设置了insets或明确的尺寸。
负插图可以用来使背景比弹出框大。下面的例子使用负插图在弹出框边界外放置阴影:

  Popup {
      topInset: -2
      leftInset: -2
      rightInset: -6
      bottomInset: -6

      background: BorderImage {
          source: ":/images/shadowed-background.png"
      }
  }

三、弹出分级

如果在弹出框中只使用单个元素,它将调整大小以适应其包含的元素的隐式大小。这使得它特别适合与布局一起使用。

  Popup {
      ColumnLayout {
          anchors.fill: parent
          CheckBox { text: qsTr("E-mail") }
          CheckBox { text: qsTr("Calendar") }
          CheckBox { text: qsTr("Contacts") }
      }
  }

有时,弹出框中可能有两项:

  Popup {
      SwipeView {
          // ...
      }
      PageIndicator {
          anchors.horizontalCenter: parent.horizontalCenter
          anchors.bottom: parent.bottom
      }
  }

在这种情况下,Popup无法计算出合理的隐式大小。由于我们将PageIndicator锚定在了SwipeView上,我们可以简单地将内容大小设置为视图的隐式大小:

  Popup {
      contentWidth: view.implicitWidth
      contentHeight: view.implicitHeight

      SwipeView {
          id: view
          // ...
      }
      PageIndicator {
          anchors.horizontalCenter: parent.horizontalCenter
          anchors.bottom: parent.bottom
      }
   }

四、弹出定位

与Qt Quick中的Item类似,Popup的x和y坐标是相对于其父元素的。这意味着打开一个按钮的子弹出框,将导致该弹出框相对于按钮的位置。

下面的例子使用附加的覆盖层。属性Overlay将一个弹出窗口定位在窗口的中心,而不管打开弹出窗口的按钮在什么位置:
在这里插入图片描述

  Button {
      onClicked: popup.open()

      Popup {
          id: popup

          parent: Overlay.overlay

          x: Math.round((parent.width - width) / 2)
          y: Math.round((parent.height - height) / 2)
          width: 100
          height: 100

		  Label{
                text: "弹出内容!"
         }
      }
  }

另一种让弹出窗口居中的方法是使用anchors.centerIn,而不用考虑它的父元素:

  ApplicationWindow {
      id: window
      // ...

      Pane {
          // ...

          Popup {
              anchors.centerIn: Overlay.overlay
          }
      }
  }

为了确保弹出窗口位于包围窗口的边界内,可以将margin属性设置为非负值。

五、定制化

在这里插入图片描述

  import QtQuick 2.12
  import QtQuick.Controls 2.12

  Popup {
      id: popup
      background: Rectangle {
          implicitWidth: 200
          implicitHeight: 200
          border.color: "#444"
      }
      contentItem: Column {}
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力推美团企业版 美团究竟意欲何为?

已经拥有930万活跃商家的美团公司,正在充分整合自身的“供应链”优势,冲向B端市场。 3月31日,据36氪消息显示,美团将于近期正式上线面向To B市场的业务“美团企业版”,定位企业消费赛道。美团企业版会为企业客户提供消…

ZeroTier 内网穿透

ZeroTier 内网穿透 官网注册账号,创建自己的局域网段, 登录官网 创建网络: 点击创建好的网络,进入设置界面进行设置, 选择 public 模式,点击入设置页面 地址随便选择 说明没有设备链接 下载客户端 ,下载 安装客户端&#xf…

高级数据结构与算法 | 三元搜索树(Ternary Search Tree)

文章目录TernarySearchTree基本概念介绍原理插入查找删除代码实现TernarySearchTree 基本概念 介绍 Ternary Search Tree(三元搜索树),它是由 Bentley 和 Sedgewick 在 1997 年提出的一种基于 Trie 的思想改良的一种数据结构,其…

【GCU体验】基于PyTorch + GCU跑通ResNet50模型并测试GCU性能

一、环境 地址:启智社区:https://openi.pcl.ac.cn/ 二、计算卡介绍 云燧T20是基于邃思2.0芯片打造的面向数据中心的第二代人工智能训练加速卡,具有模型覆盖面广、性能强、软件生态开放等特点,可支持多种人工智能训练场景。同时具备灵活的可…

win10 64位 环境下安装CUDA 11.8和 cuDNN v8.6.0

win10 64位 环境下安装CUDA 11.8和 cuDNN v8.6.0 1 安装 NVIDIA 显卡驱动程序 下载地址:http://www.nvidia.cn/Download/index.aspx?langcn ​​​​​​ 下载文件:531.41-desktop-win10-win11-64bit-international-nsd-dch-whql 选择适合自己电脑的显…

DeepFM论文翻译

1.摘要 为了最大化推荐系统的CTR,学习用户行为的复杂交叉特征很关键。 尽管有很大进步,现有的方法无论对低阶还是高阶的交叉特征,似乎还是有很强的bias, 或者需要专门的特征工程。 本文,我们证明了得出一个能强化高阶和低阶交叉特…

前端实现自动化测试

什么是前端测试 我们经常说的单元测试其实只是前端测试的一种。前端测试分为单元测试,UI 测试,集成测试和端到端测试。 ● 单元测试:是指对软件中的最小可测试单元进行检查和验证,通常指的是独立测试单个函数。 ● UI 测试&#…

2023美赛Y题二手帆船价格--成品论文、思路、数据、代码

2023美赛Y题二手帆船价格 第一时间在CSDN分享 最新进度在文章最下方卡片,加入获取一手资源:2023美赛Y题二手帆船价格–成品论文、思路、数据、代码 可以提供关于帆船特性的信息: BoatTrader (https://www.boattrader.com/):一个网站,允许您根…

WindowsGUI自动化测试项目实战+辛酸过程+经验分享

WindowsGUI自动化测试项目实战辛酸过程经验分享一、前言⚜ 起因⚜ 项目要求⚜ 预研过程⚜⚜ 框架选型⚜⚜ 关于UIaotumation框架⚜ 预研成果二、项目介绍💓 测试对象💓 技术栈💓 项目框架说明三、项目展示🤣 界面实现效果&#x1…

【深度学习】windows10环境配置详细教程

【深度学习】windows10环境配置详细教程 文章目录【深度学习】windows10环境配置详细教程Anaconda31.安装Anaconda32.卸载Anaconda33.修改Anaconda3安装虚拟环境的默认位置安装cuda/cudnn1.安装合适的CUDA2.安装对应的CUDNN3.卸载CUDA/CUDNNconda虚拟环境独立安装cuda/cudnn1.搭…

随想录Day55--动态规划: 392.判断子序列 , 115.不同的子序列

392.判断子序列 思路 (这道题也可以用双指针的思路来实现,时间复杂度也是O(n)) 动态规划五部曲分析如下: 1.确定dp数组(dp table)以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串s,和…

基线配置管理在网络中的重要性

在网络环境中,配置通常被认为具有不可估量的价值,因为设备配置的微小变化可以在几分钟内成就或破坏整个网络基础设施。 这些配置分为两部分:启动配置和运行配置。在网络设备中,默认情况下,第一个配置版本被视为运行和…

el-input-number的精度问题

前言 el-input-number 饿了么的数字输入框组件,在项目中听常用的。而这个组件比较常用的属性就是精度设置,给组件添加属性precision 。 其实吧,之前一直没怎么研究,保留几位小数就直接填几就好了,比如保留两位小数&am…

4.mysql内置函数

目录 日期函数 字符串函数 数学函数 其它函数 日期函数 获得当前年月日:

<点云>Bin-picking数据集

题目:工业料仓拣选的大规模6D物体姿态估计数据集 Abstract 介绍了一种新的公共数据集,用于6D对象姿态估计和用于工业bin-picking的实例分割。数据集包括合成场景和真实场景。对于这两者,提供了包括6D姿势 (位置和方向) 的点云、深度图像和注…

【华为机试真题详解JAVA实现】—从单向链表中删除指定值的节点

目录 一、题目描述 二、解题代码 一、题目描述 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。 链表的值不能重复。 构造过程,例如输入一行数据为: 6 2 1 2 3 2 5 1 4 5 7 2 2 则第一个参数6表示输入总共6个节点,…

C++基础语法(内存管理)

我们在学习C语言的时候,可以在栈区中使用内存空间,但栈区的空间毕竟很有限而且随着栈的销毁,该栈里的数据都会被销毁掉。因此我们学习了堆,堆的空间比栈要大很多很多,并且堆区空间的数据,只要我们不主动释放…

STM32 学习笔记_2 下载,GPIO 介绍

下载 Keil 编译例程 编译两个按钮,一个向下是部分编译,两个向下箭头是全部编译。对于未编译文件两个按钮等效。 点击编译后,linking 是链接,结果里面的几个数据的意义代表大小: 数据类型占用Flash or SRAM说明Code…

测试:腾讯云3年轻量2核4G5M服务器CPU内存带宽流量系统盘性能

2核4G云服务器可以选择腾讯云轻量应用服务器,自带5M公网带宽,5M带宽下载速度峰值可达640KB/秒,系统盘为60GB SSD盘,每月500GB流量包,折合每天16GB流量,2核4G5M轻量服务器一年168、198元15个月、三年628元&a…

从存算分离说起:金融行业数据库分布式改造之路

从上世纪90年代正式起步至今,中国数据库发展已走过近30年岁月。以2000年前后为拐点,以MySQL为首的开源数据库,在互联网厂商的推动下,逐步进入生产业务;而为了使单实例能力平庸的MySQL能够满足高性能要求,互…