Qt扫盲-QScrollArea理论总结

news2025/1/15 22:37:15

这里写目录标题

    • 1. 概述
    • 2. 滚动条策略
    • 3. 子控件
    • 4. 尺寸提示

1. 概述

QScrollArea 用于显示滚动区域框架内的子控件的内容。如果控件超过框架的大小,视图可以提供滚动条,以便可以查看子控件的整个区域。子控件必须使用 setWidget() 指定。但是在 QDesigner 里面QScrollArea 会自动的创建一个 QWidget 名字叫 scrollAreaWidgetContents 这个类作为子控件 ,到时候我们只需要把我们想要的界面元素布局好。这个scrollAreaWidgetContents 直接 setLayout一下就好了。
在这里插入图片描述

也可以指定自己的子控件
例如:

  QLabel *imageLabel = new QLabel;
  QImage image("happyguy.png");
  imageLabel->setPixmap(QPixmap::fromImage(image));

  scrollArea = new QScrollArea;
  scrollArea->setBackgroundRole(QPalette::Dark);
  scrollArea->setWidget(imageLabel);

上面的代码创建了一个包含图像标签的滚动区域(如下图所示)。缩放图像时,滚动区域可以提供必要的滚动条:
在这里插入图片描述

2. 滚动条策略

滚动条外观取决于当前设置的滚动条策略。您可以使用从 QAbstractScrollArea 继承的功能来控制滚动条的外观。就是控制显示不显示的功能。

例如,可以设置 QAbstractScrollArea::horizontalScrollBarPolicy 和 QAbstractScrollArea::verticalScrollBarPolicy 属性。或者,如果您希望滚动条在滚动区域的内容更改时动态调整,则可以使用 horizontalScrollBar() 和 verticalScrollBar() 函数来够访问滚动条,并在滚动区域的内容更改时使用 QScrollBar::setValue() 函数设置滚动条的值。

3. 子控件

您可以使用 widget() 函数检索子控件。可以使用 setWidgetResizable() 函数使视图大小调整。子控件的对齐方式可以用 setAlignment() 指定。

一般来说。要滚动条能够显示的条件是 widget() 所指向的控件的 大小大于 QScrollArea 的大小,这样就能把滚动条显示
就像下面的 子控件(scrollAreaWidgetContents )大小 为 高度固定 400 ,但是 QScrollArea 的高度大小是 171 就会出滚动条。(这个 只需要设置scrollAreaWidgetContents 最小高度为400就行)
在这里插入图片描述
当把 QScrollArea 的高度大小改为 410 ,滚动条就消失了。
在这里插入图片描述

两个方便的函数 ensureVisible() 和 ensureWidgetVisible() 确保内容的某个区域在视口内可见,必要时通过滚动内容。

4. 尺寸提示

使用滚动区域显示自定义子控件的内容时(其实也就是 上面的例子 scrollAreaWidgetContents ),请务必确保将子小部件的大小提示设置为合适的值。如果子小部件使用标准 QWidget,则可能需要调用 QWidget::setMinimumSize() 以确保小部件的内容在滚动区域中正确显示。 这个在 QDesigner 里面拖拽的时候的QScrollArea 就会自动生成一个 QWidget 类型的 scrollAreaWidgetContents, 我们只需要设置好 这个 scrollAreaWidgetContents 的 minimumSize 的其中一个或者所有属性就可以自动的出滚动区域了。和第3 点是一个道理。

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

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

相关文章

【车载开发系列】UDS诊断---请求下载($0x34)

【车载开发系列】UDS诊断—请求下载($0x34) UDS诊断---请求下载($0x34)【车载开发系列】UDS诊断---请求下载($0x34)一.概念定义二.产生背景三.报文格式1)请求报文2)肯定响应3&#x…

[附源码]Nodejs计算机毕业设计基于的民宿租赁系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

MySQL处理非结构化JSON数据(附 MyBatis-Plus 集成)

概述 MySQL 自5.7起开始支持JSON格式的非结构化数据,并且在8.x版本进行性能优化 关于 JSON JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Asso…

Spring Cloud Alibaba

Spring Cloud Alibaba第五部分 第二代 Spring Cloud 核心组件(SCA)第 1 节 Nacos 服务注册和配置中心1.1 Nacos 介绍1.2 Nacos 单例服务部署1.3 微服务注册到Nacos1.4 负载均衡1.5 Nacos 数据模型(领域模型)1.6 Nacos 配置中心1.6…

智能家居DIY创意之智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

水下潜航器的建模与控制

(线性系统理论大作业) 题目 水下潜器模型,可能是潜艇或者鱼雷等对象。一个主推进螺旋桨,前后两对水平陀翼,后面一对垂直陀翼。   潜器前进过程中,通过调节助推进螺旋桨推力,以及三对陀翼的角度变化,对潜…

paddle_gpu安装配置

paddle_gpu安装配置1.确认安装版本2. 安装相关文件2.1 下载与安装3.cuDNN下载及安装4.创建conda虚拟环境5.参考教程1.确认安装版本 操作系统:windows安装方式:condapython版本:python3.7CUDA版本:本人电脑版本【11.6.134】,低于此版本电脑都…

傻白入门芯片设计,盘点CPU业界的顶尖人才(十四)

这篇文章主要是针对现在CPU业界的顶尖人才,体现为以下几点:提出了革命性的技术路线,做出了杰出的产品,为公司做出重要贡献。按照当前供职情况,根据国际巨头所在公司分类,我主要收集了AMD,其余几…

【DevOps实战系列】第八章:详解Jenkins集成Docker私服Nexus3

个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 Jenkins集成Docker镜像仓库 docker私服已经搭建完毕,下边我们期望jenkins做的事是: ①通过git拉取代码②通过maven构建生成jar包③构建含有jar包的镜像④推送到docker仓库…

五问补盲(三) | 补盲激光雷达,敢不敢直面新的安全威胁?

作者 | 爱LiDAR的小飞哥 编辑 | 王博在激光雷达上车的热潮中,各家都在技术参数上进行着“你死我活”的拼杀。 那么,参数代表一切吗?举个例子,测距200米的激光雷达一定比测距150米的更好吗? 可以肯定地说,非…

JVM 之 AdaptiveSizePolicy 参数

AdaptiveSizePolicy 简介 AdaptiveSizePolicy(自适应大小策略) : JDK 1.8 默认使用 UseParallelGC 垃圾回收器,该垃圾回收器默认启动了 AdaptiveSizePolicy,会根据GC的情况自动计算计算 Eden、From 和 To 区的大小。 配置: 开启…

vue生命周期

vue的生命周期就是vue实例从创建到销毁的全过程,就是从开始创建、初始化数据、编译模版、挂载Dom、更新渲染、卸载等⼀系列过程,在这个过程中存在生命周期的钩子函数,我们可以在对应阶段添加实现自己的代码。 钩子函数(共8个&…

智慧物流|Springboot+Vue+Nodejs实现智慧物流系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

Java如何读取输入

文章目录0.写在前面1.介绍2.举例3.写在最后0.写在前面 Java语言可以接收从键盘的输入,一般用来在调试的时候会用到,实际开发一般不用。 所以在此记录比较简单。 1.介绍 读取流程: 1.导入需要的工具包 2.构造一个“标准输入流”System.in关…

软件测试基础理论体系学习10-什么是本地化测试?本地化测试有哪些问题?本地化测试的重点是什么?

10-什么是本地化测试?本地化测试有哪些问题?本地化测试的重点是什么?1 本地化测试概述1.1软件本地化概念1.2 软件本地化工程1.3 软件本地化的重要性2 本地化测试翻译问题2.1 软件本地化不等于软件翻译2.2 软件本地化语言翻译技术2.2.1 翻译记…

K8s Service 负载均衡底层分析

当我们创建完 Pod 后,Pod 的 IP 与 Service IP 会自动分配,而 Pod IP 仅 K8s 集群内部访问,那 K8s 集群外部客户端又是如何访问 Pod 呢?看了官方相关文档,查询到是通过 Host 的 iptables(即 K8s 集群节点的…

服务器多用户共享Anaconda

实验室最近买了台服务器,这篇Blog用来记载一下给ubuntu 20.04的服务器安装一个共享的anaconda的步骤。 安装Anaconda 首先去anaconda的官网下载linux的安装包,推送到服务上。然后进行安装: sudo bash ./Anaconda3-2022.10-Linux-x86_64.sh…

99.(leaflet之家)leaflet军事标绘-分队战斗行动修改

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> …

Linux从入门到进阶学习(Ⅰ):Linux系统安装与配置

目录 1 Linux概述 2 虚拟机安装 3 安装Centos系统 ​4 远程连接Linux系统 5 WSL环境 6 虚拟机快照 1 Linux概述 内核是操作系统的核心&#xff0c;Linux内核是免费开源的&#xff0c;由此产生了许多Linux发行版&#xff0c;包括&#xff1a;Ubuntu、CentOs等 2 虚拟机安…

零钱通项目(面向过程)

目录 项目需求 项目界面 思路 写代码 第一步 第二步 第三步 IDEA运行问题 日期问题 代码运行问题 第四步 第五步 第一种 第二种 第六步 第七步 完整代码 运行效果 项目需求 使用Java 开发 零钱通项目&#xff0c;可以完成收益入账&#xff0c;消费&#xff0…