当前位置: 首页 > news >正文

<QT基础(2)>QScrollArea使用笔记

项目需要设置单个检查的序列图像预览窗口,采用QScrollArea中加入QWidget窗口,每个窗口里面用Qlabel实现图像预览。
过程涉及两部分内容

  • 引入QWidget
    • 引入label
    • 插入图像(resize)
  • 引入布局

组织

scrollArea内部自带Qwidget,后续的控件添加和layout都是在QWidget内部。
在这里插入图片描述

代码

这一过程的主要步骤是向QScrollArea内添加预览窗口的方案,首先图像的展示使用的是将QLabel的PixelMap与图像映射实现的,本文重点要做的是把QLabel放到QScollArea内,实现按照给定数量添加指定数量的QLabel,用于后续PixelMap的映射。为了方便实现,QLabel被置入QWidget中,放入Layout组织起来给传递过去。

这里在网上发现了一个很巧妙的实现,他做了一个QWidget的派生类ScrollableWidget,在派生类内构造子控件组织要添加的QLabel,然后直接调用QScrollArea的addwidget把一整个ScrollableWidget加入到界面中。这和我的应用很契合,每次Load新的序列需要把当前工作区的所有数据清除,包括预览窗口,然后重新构造。这样构造预览窗口可以直接删除当前QScrollArea的ScrollableWidget,然后根据当前Load的数据构造新的ScrollableWidget。

#include <QtWidgets>class ScrollableWidget : public QWidget {
public:ScrollableWidget(int numWidgets) {QVBoxLayout *layout = new QVBoxLayout(this);for (int i = 0; i < numWidgets; ++i) {QWidget *widget = new QWidget;QLabel *label = new QLabel(QString("Label %1").arg(i));QVBoxLayout *widgetLayout = new QVBoxLayout(widget);widgetLayout->addWidget(label);layout->addWidget(widget);}}
};class MainWindow : public QWidget {
public:MainWindow() {QScrollArea *scrollArea = new QScrollArea;ScrollableWidget *scrollableWidget = new ScrollableWidget(10);scrollArea->setWidgetResizable(true);scrollArea->setWidget(scrollableWidget);QVBoxLayout *mainLayout = new QVBoxLayout(this);mainLayout->addWidget(scrollArea);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);MainWindow window;window.setGeometry(100, 100, 400, 400);window.show();return app.exec();
}

这个应该是解决序列文件读取比较好的方式,每次读取只需要把scrollableWidget delete就好了,由对象树机制直接剔除所有的子控件,在新的Load中重新构造scrollableWidget并导入即可。

测试项目

输入20个Label
在这里插入图片描述
删除20个并输入10个
在这里插入图片描述
代码:

#pragma once#include <QtWidgets/QMainWindow>
#include <QtWidgets>
#include "ui_dcmimgpro.h"class DcmImgPro : public QMainWindow
{Q_OBJECTpublic:DcmImgPro(QWidget *parent = nullptr);~DcmImgPro();private:Ui::DcmImgProClass ui;
private slots:void pushbtn();void lineEditset();
private:int l_num = 15;
};class ScrollableWidget:public QWidget
{
public:ScrollableWidget(int numWidgets){QVBoxLayout* layout = new QVBoxLayout(this);for (int i = 0; i < numWidgets; i++){QWidget* widget = new QWidget;QString msg = "Label_" + QString::number(i);QLabel* label = new QLabel(msg);QVBoxLayout* widgetlayout = new QVBoxLayout(widget);widgetlayout->addWidget(label);layout->addWidget(widget);}};};
#include "dcmimgpro.h"DcmImgPro::DcmImgPro(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);ui.scrollArea->setWidgetResizable(true);ScrollableWidget* scrollableWidget = new  ScrollableWidget(l_num);ui.scrollArea->setWidget(scrollableWidget);connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(pushbtn()));connect(ui.lineEdit, SIGNAL(returnPressed()), this, SLOT(lineEditset()));}void DcmImgPro::pushbtn()
{ui.scrollArea->setWidget(nullptr);ScrollableWidget* scrollableWidget = new  ScrollableWidget(l_num);ui.scrollArea->setWidget(scrollableWidget);
}void DcmImgPro::lineEditset()
{l_num = ui.lineEdit->text().toInt();}
DcmImgPro::~DcmImgPro()
{}

相关文章:

<QT基础(2)>QScrollArea使用笔记

项目需要设置单个检查的序列图像预览窗口&#xff0c;采用QScrollArea中加入QWidget窗口&#xff0c;每个窗口里面用Qlabel实现图像预览。 过程涉及两部分内容 引入QWidget 引入label插入图像&#xff08;resize&#xff09; 引入布局 组织 scrollArea内部自带Qwidget&#…...

springboot企业级抽奖项目业务四 (缓存预热)

缓存预热 为什么要做预热: 当活动真正开始时&#xff0c;需要超高的并发访问活动相关信息 必须把必要的数据提前加载进redis 预热的策略: 在msg中写一个定时任务 每分钟扫描一遍card_game表 把(开始时间 > 当前时间)&& (开始时间 < 当前时间1分钟)的活动及相…...

opejdk11 java 启动流程 java main方法怎么被jvm执行

java启动过程 java main方法怎么被jvm执行 java main方法是怎么被jvm调用的 1、jvm main入口 2、执行JLI_Launch方法 3、执行JVMInit方法 4、执行ContinueInNewThread方法 5、执行CallJavaMainInNewThread方法 6、创建线程执行ThreadJavaMain方法 7、执行ThreadJavaMain方法…...

link 样式表是否会阻塞页面内容的展示?取决于浏览器,edge 和 chrome 会,但 firefox 不会。

经过实测&#xff1a; 在 head 中 link 一个 1M 大小的样式表。设置网络下载时间大概为 10 秒。 edge 和 chrome 只有在下载完样式表后&#xff0c;页面上才会出现内容。而 firefox 可以直接先显示内容&#xff0c;然后等待样式表下载完成后再应用样式。 DOMContentLoaded 事…...

uniapp对接极光推送(国内版以及海外版)

勾选push&#xff0c;但不要勾选unipush 国内版 网址&#xff1a;极光推送-快速集成消息推送功能,提升APP运营效率 (jiguang.cn) 进入后台&#xff0c;并选择对应应用开始配置 配置安卓包名 以及ios推送证书&#xff0c;是否将生产证书用于开发环境选择是 ios推送证书…...

智慧城市数字孪生,综合治理一屏统览

现代城市作为一个复杂系统&#xff0c;牵一发而动全身&#xff0c;城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维&#xff0c;从构成城市诸多要素、结构、功能等方面入手&#xff0c;系统推进…...

在Java中对SQL进行常规操作的通用方法

SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法&#xff0c;获取数据库连接对象3.closeAll()方法&#xff0c;关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中&#xff0c;我们在Java中对…...

JavaSE day16笔记 - string

第十六天课堂笔记 学习任务 Comparable接口★★★★ 接口 : 功能的封装 > 一组操作规范 一个抽象方法 -> 某一个功能的封装多个抽象方法 -> 一组操作规范 接口与抽象类的区别 1本质不同 接口是功能的封装 , 具有什么功能 > 对象能干什么抽象类是事物本质的抽象 &…...

java将文件转成流文件返回给前端

环境&#xff1a;jdk1.8&#xff0c;springboot2.5.3,项目端口号&#xff1a;9100 1.待转换的文件 一、路径 二、文件内容 2.controller中代码 package com.example.pdf.controller;import com.example.pdf.service.GetFileStreamService; import org.springframework.web.b…...

使用Node.js常用命令提高开发效率

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;广泛用于构建服务器端应用程序和命令行工具。Node.js提供了丰富的命令和工具&#xff0c;可以帮助开发者更高效地开发应用程序。在日常开发中&#xff0c;除了Node.js本身的核心功能外&#xff0c;npm&#x…...

百度资源平台链接提交

百度资源平台是百度搜索引擎提供的一个重要工具&#xff0c;用于帮助网站主将自己的网站链接提交给百度搜索引擎&#xff0c;以便更快地被收录和展示在搜索结果中。以下将就百度资源平台链接提交的概念、操作方法以及其对网站收录和曝光的影响进行探讨&#xff1a; 什么是百度资…...

力扣爆刷第108天之CodeTop100五连刷26-30

力扣爆刷第108天之CodeTop100五连刷26-30 文章目录 力扣爆刷第108天之CodeTop100五连刷26-30一、15. 字符串相加二、300. 最长递增子序列三、42. 接雨水四、43. 重排链表五、142. 环形链表 II 一、15. 字符串相加 题目链接&#xff1a;https://leetcode.cn/problems/add-strin…...

Android裁剪图片为波浪形或者曲线形的ImageView

如果需要做一个自定义的波浪效果的进度条&#xff0c;裁剪图片&#xff0c;对ImageView的图片进行裁剪&#xff0c;比如下面2张图&#xff0c;如何实现&#xff1f; 先看下面的效果&#xff0c;看到其实只需要对第一张高亮的图片进行处理即可&#xff0c;灰色状态的作为背景图。…...

Linux课程____shell脚本应用

:一、认识shell 常用解释器 Bash , ksh , csh 登陆后默认使用shell&#xff0c;一般为/bin/bash&#xff0c;不同的指令&#xff0c;运行的环境也不同 二、 编写简单脚本并使用 # vim /frist.sh //编写脚本文件&#xff0c;简单内容 #&#xff01;/bin/bash …...

设计模式12--组合模式

定义 案例一 案例二 优缺点...

【微服务】软件架构的演变之路

目录 单体式架构的时代单体式架构(Monolithic)优点缺点适用场景单体式架构面临诸多问题1.宽带提速&#xff0c;网民增多2.Web2.0时代的特点问题描述优化方向 集群优点缺点适用场景搭建集群后面临诸多问题用户请求问题用户的登录信息数据查询 改进后的架构 垂直架构优点缺点 分布…...

安全算法 - 加密算法

加密算法是一种在信息安全领域中广泛应用的算法&#xff0c;能够将数据进行加密转换&#xff0c;以保证数据的保密性和安全性。 它具有保密性、对称加密和非对称加密、密钥管理、数据完整性和认证等重要特点和应用。 加密算法可以分为对称加密和非对称加密两种类型&#xff1…...

安全算法 - 国密算法

国密算法是中国自主研发的密码算法体系&#xff0c;包括对称加密算法、非对称加密算法和哈希算法。其中&#xff0c;国密算法采用SM4作为对称加密算法&#xff0c;SM2作为非对称加密算法&#xff0c;以及SM3作为哈希算法。国密算法在信息安全领域具有重要意义和广泛应用&#x…...

蓝桥杯2014年第十三届省赛真题-武功秘籍

一、题目 武功秘籍 小明到X山洞探险&#xff0c;捡到一本有破损的武功秘籍&#xff08;2000多页&#xff01;当然是伪造的&#xff09;。他注意到&#xff1a;书的第10页和第11页在同一张纸上&#xff0c;但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的…...

Could not initialize class java.awt.Font

项目场景&#xff1a; 项目场景&#xff1a;java项目在web端导出Excel、Word、PDF等文档 问题描述 在Windows系统中开发以及运行文件导出正常&#xff0c;单机部署到Linux中或者使用docker部署后&#xff0c;导出报错。 异常&#xff1a; eleasing transactional SqlSession…...

Mysql or与in的区别

创建一个表格 内涵一千万条数据 这张表中&#xff0c;只有id有建立索引&#xff0c;且其余都没有 测试1&#xff1a;使用or的情况下&#xff0c;根据主键进行查询 可以看到根据主键id进行or查询 花费了30-114毫秒&#xff0c;后面30多毫秒可能是因为Mysql的Buffer Pool缓冲池的…...

STM32——USART

一、通信 1.1通信是什么&#xff1b; 通信是将一个设备的数据发送到另一个设备中&#xff0c;从而实现硬件的扩展&#xff1b; 1.2通信的目的是什么&#xff1b; 实现硬件的扩展-在STM32中集成了很多功能&#xff0c;例如PWM输出&#xff0c;AD采集&#xff0c;定时器等&am…...

WebCopilot:一款功能强大的子域名枚举和安全漏洞扫描工具

关于WebCopilot WebCopilot是一款功能强大的子域名枚举和安全漏洞扫描工具&#xff0c;该工具能够枚举目标域名下的子域名&#xff0c;并使用不同的开源工具检测目标存在的安全漏洞。 工具运行机制 WebCopilot首先会使用assetsfinder、submaster、subfinder、accumt、finddom…...

HarmonyOS实战开发-如何实现一个支持加减乘除混合运算的计算器。

介绍 本篇Codelab基于基础组件、容器组件&#xff0c;实现一个支持加减乘除混合运算的计算器。 说明&#xff1a; 由于数字都是双精度浮点数&#xff0c;在计算机中是二进制存储数据的&#xff0c;因此小数和非安全整数&#xff08;超过整数的安全范围[-Math.pow(2, 53)&#…...

每日OJ题_子序列dp⑥_力扣873. 最长的斐波那契子序列的长度

目录 力扣873. 最长的斐波那契子序列的长度 解析代码 力扣873. 最长的斐波那契子序列的长度 873. 最长的斐波那契子序列的长度 难度 中等 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#x…...

病毒循环Viral Loop是什么?为何能实现指数增长

一、什么是病毒循环&#xff08;Viral Loop&#xff09;&#xff1f; 病毒循环&#xff08;Viral Loop&#xff09;是一种机制&#xff0c;它推动连续的推荐以实现持续增长。 它会促使你现有的客户推荐其他人&#xff0c;去认识你的品牌&#xff0c;然后让这些新客户进一步告诉…...

下载huggingface中数据集/模型(保存到本地指定路径)

一. snapshot_download # 1.安装huggingface_hub # pip install huggingface_hubimport osfrom huggingface_hub import snapshot_downloadprint(downloading entire files...) # 注意&#xff0c;这种方式仍然保存在cache_dir中 snapshot_download(repo_id"ibrahimhamam…...

HarmonyOS实战开发-使用List组件实现导航与内容联动的效果。

1 卡片介绍 使用ArkTS语言&#xff0c;实现一个导航与内容二级联动的效果。 2 标题 二级联动&#xff08;ArkTS&#xff09; 3 介绍 本篇Codelab是主要介绍了如何基于List组件实现一个导航和内容的二级联动效果。样例主要包含以下功能&#xff1a; 切换左侧导航&#xff…...

ArcGIS二次开发(一)——搭建开发环境以及第一个简单的ArcGIS Engine 程序

Arcgis10.2、Arcgis Engine10.2与Microsoft Visual Studio 2012的版本进行安装 1、推荐教程与安装包2、安装顺序3、安装成功测试VS新建项目可以创建ArcGIS项目&#xff0c;并且在VS中拖拽ArcGIS工具 4、搭建第一个简单的ArcGIS Engine 程序 ArcEngine和VS版本是有对应的&#x…...

Oracle 19c 高可用部署实战系列之Data Guard理论与实战

课程介绍 Oracle Data Guard确保企业数据的高可用性、数据保护和灾难恢复。 Oracle Data Guard提供了一组全面的服务&#xff0c;用于创建、维护、管理和监视一个或多个备用数据库&#xff0c;使生产Oracle数据库能够在灾难和数据损坏中幸存下来。Oracle Data Guard将这些备用…...

wordpress加载特效/网络营销与电子商务的区别

mpi win 安装mpi Win10下Microsoft MPI&#xff08;MSMPI&#xff09;的下载安装 - 知乎 (zhihu.com) (34条消息) Dev配置MPI运行环境&#xff08;msmpi&#xff09;和OpenMP环境&#xff08;运行通过&#xff09;_devc mpi配置_一点年羊的博客-CSDN博客 #命令行运行启动多进程…...

阿里云 做网站 百度开放云/百度指数免费查询

为大家分享一款专业的音乐标签及管理工具&#xff0c;Yate for mac主要用于标记和整理你的音频文件&#xff0c;你可以轻松编辑音乐文件的元标签数据&#xff0c;Yate for mac支持AIFF、DFF、FLAC、M4A、M4B、MP3、MP4等格式的音频文件&#xff0c;不管是自动还是手动标记文件都…...

怎么样做网站/seo优化工具

最近因为工作需求原因一直使用VUE框架&#xff0c;作为时下最热门的渐进式框架&#xff0c;开发起来确实非常给力~ 当然一个好的工具也不可能完全对你百依百顺&#xff0c;最近在工作中就遇到了一个问题&#xff0c;经过一下午的奋战终于搞定了&#xff0c;秉承着本熊一贯的无私…...

网站建设 财务归类/怎么注册电商平台

随着支付宝小程序的普及和市场占有率的持续提升&#xff0c;越来越多的商家企业都想做支付宝小程序&#xff0c;下面就和大家分享一下支付宝小程序怎么做&#xff1f;什么是支付宝小程序&#xff1f;支付宝小程序是一种全新的开放模式&#xff0c;它运行在支付宝客户端&#xf…...

做网站正规公司/全网媒体发布平台

nginx指定多个域名跨域请求配置什么是跨域假设我们页面或者应用已在 http://www.test1.com 上了&#xff0c;而我们打算从 http://www.test2.com 请求提取数据。一般情况下&#xff0c;如果我们直接使用 AJAX 来请求将会失败&#xff0c;浏览器也会返回“源不匹配”的错误&…...

信息技术咨询公司/郑州seo线下培训

正则表达式分为两类<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />basic reprxp 基本正则表达式&#xff1b;extended reprxp 扩展正则表达式&#xff1b;基本正则表达式和扩展正则表达式支持的元字符不一样基本正则表达式gre…...