<QT基础(4)>QLabel使用笔记

news2024/10/10 20:14:54

Label

前面的文章里面把QLabel批量引入ScrollArea作为预览窗口,这篇把图像填充到QLable的PixelMap展示指定图像。

参数设置

设置QLabel的大小格式

 QWidget* widget = new QWidget;
widget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
widget->setMinimumSize(QSize(210, 210));

QString msg = "Label_" + QString::number(i);
QLabel* label = new QLabel(msg);
label->setGeometry(QRect(0, 0, widget->width(), widget->height()));//全屏铺满
label->setMinimumSize(QSize(200, 200));
label->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);

PixelMap填充

重点是PixelMap的填充,所以这里像素值以渐变对象填充了。

// 创建一个渐变对象,并设置渐变色
QLinearGradient gradient(0, 0, 200, 0); // 从左到右的线性渐变
gradient.setColorAt(0, Qt::red);
gradient.setColorAt(0.5, Qt::green);
gradient.setColorAt(1, Qt::blue);

// 创建一个QPixmap,并使用渐变填充
QPixmap pixmap(200, 200);
pixmap.fill(Qt::transparent); // 填充透明背景
QPainter painter(&pixmap);
painter.fillRect(pixmap.rect(), gradient);

label->setPixmap(pixmap);

CV::Mat 到PixelMap填充

这里没有写cv::Mat到PixelMap的映射,因为重点是PixelMap的功能展示,以下是一个Mat到PixelMap对照的例子。

cv::Mat image = cv::imread("1.jpg"); // 替换为您的图像路径
QImage qimage(image.data, image.cols, image.rows, image.step, QImage::Format_RGB888);
qimage = qimage.rgbSwapped();
QSize targetSize(200, 200);
qimage = qimage.scaled(targetSize, Qt::KeepAspectRatio);
QPixmap pixmap = QPixmap::fromImage(qimage);
label->setPixmap(pixmap);

总体代码及效果

#pragma once

#include <QtWidgets/QMainWindow>
#include <QtWidgets>
#include "ui_dcmimgpro.h"

class DcmImgPro : public QMainWindow
{
    Q_OBJECT

public:
    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;
            widget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
            widget->setMinimumSize(QSize(210, 210));

            QString msg = "Label_" + QString::number(i);
            QLabel* label = new QLabel(msg);
            label->setGeometry(QRect(0, 0, widget->width(), widget->height()));//全屏铺满
            label->setMinimumSize(QSize(200, 200));
            label->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);

            // 创建一个渐变对象,并设置渐变色
            QLinearGradient gradient(0, 0, 200, 0); // 从左到右的线性渐变
            gradient.setColorAt(0, Qt::red);
            gradient.setColorAt(0.5, Qt::green);
            gradient.setColorAt(1, Qt::blue);

            // 创建一个QPixmap,并使用渐变填充
            QPixmap pixmap(200, 200);
            pixmap.fill(Qt::transparent); // 填充透明背景
            QPainter painter(&pixmap);
            painter.fillRect(pixmap.rect(), gradient);

            label->setPixmap(pixmap);

            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);
    ui.lineEdit->setText(QString::number(l_num));
    connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(pushbtn()));
    connect(ui.lineEdit, SIGNAL(editingFinished()), this, SLOT(lineEditset()));
    //textChanged   cursorPositionChanged
    //editingFinished  selectionChanged returnPressed() 
}

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()
{
 
}

在这里插入图片描述

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

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

相关文章

31-5 命令执行漏洞 - RCE漏洞利用

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、打开pikachu靶场 二、远程命令执行利用 正常情况下这一关卡就是个ping命令,我们只能输入个 ip 靶场就就会ping 这ip 但是我们可以用管道符拼接来执行其他命令,详细可以看我…

每日一题 --- 快乐数[力扣][Go]

快乐数 题目&#xff1a;202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到…

正弦实时数据库(SinRTDB)的使用(5)-历史数据查询

前文已经将正弦实时数据库的使用进行了介绍&#xff0c;需要了解的可以先看下面的博客&#xff1a; 正弦实时数据库(SinRTDB)的安装 正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据 正弦实时数据库(SinRTDB)的使用(2)-接入OPC DA的数据 正弦实时数据库(SinRTDB)…

全国产数据采集卡定制,24位八通道以太网数据采集卡 labview 100K采样

XM702是一款以太网型高速数据采集卡&#xff0c;具有8通 道真差分输入&#xff0c;24位分辨率&#xff0c;单通道最高采样率100ksps八通 道同步共计800ksps、精密前置增益放大、集成IEPE/ICP硬件 支持的特点。本产品采用了多个高精度24位ADC单元及配合本 公司多年积累开发的前置…

Linux: 检测工具: monit: cpu占用率的一个例子

最近看到monit使用的CPU有时候会突然的增加,通过perf查看,可以看到是下面这个函数调用占用的比较高。 Overhead Comma Shared Object Symbol 29.72% monit [kernel.kallsyms] [k] __d_lookup__d_lookup29.65% d_lookup proc_fill_cache ` proc_readfd_common iterate_dir ksy…

(2024,嵌套标记化,区域编码器,上下文编码器,Transformer-XL,Mamba)xT:大图像中更大上下文的嵌套标记化

xT: Nested Tokenization for Larger Context in Large Images 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 背景 3.1. 长上下文模型作为上下文编码器 3.2. 线性注意机…

2024年妈妈杯数学建模思路B题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

如何在 Oracle 中使用 CREATE SEQUENCE 语句

在本文中&#xff0c;我们将讨论 Oracle CREATE SEQUENCE 语句&#xff0c;其主要目的是提供一种可靠的方法来生成唯一且连续的数值&#xff0c;通常用于数据库表中的主键字段。此功能对于维护数据完整性和效率、确保不同记录之间的标识符有序分配尤其重要。从本质上讲&#xf…

数据库的横表和竖表

先来看个图: 定义如下&#xff1a; 横表&#xff1a;在一行数据中包含了所有的属性&#xff0c;一行就代表了一个完整的实体 竖表&#xff1a;在一行中只存储一个实体的一个属性&#xff0c;多个行组合在一起才组成一个完整的属性适用场景&#xff1a; 横表&#xff1a;对查…

从零玩转CanMV-K230(2)-开发环境搭建

文章目录 前言一、编译环境搭建二、镜像烧写总结 前言 本章介绍如何搭建CanMV-K230开发环境&#xff0c;基于LinuxRT-smart双系统开发 一、编译环境搭建 我是用的vmware虚拟机&#xff1a;ubuntu 20.04&#xff0c;搭建环境如下&#xff1a; 直接下载压缩包&#xff0c;下载…

【CTFshow 电子取证】套的签到题

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

一、JAVA集成海康SDK

JAVA集成海康SDK 文章目录 JAVA集成海康SDK前言一、项目依赖 jar1. examples.jar2. 项目依赖 jna.jar,可以通过 maven依赖到。二、集成SDK1.HcNetSdkUtil 海康 SDK封装类2.HCNetSDK3.Linux系统集成SDK三、总结前言 提示:首先去海康官网下载 https://open.hikvision.com/dow…

56、FreeRTOS/GPIO与定时器相关学习20240329

一、代码实现控制开发板上的指示灯闪烁。 /* USER CODE BEGIN 0 */ //利用定时器机制 定时器溢出时对应的回调函数实现如下 //本次实现控制PB0&#xff0c;PB1两个灯 int flag1 0,flag2 0;//使用一个标记执行以下代码 会造成一个灯常亮 另一个常灭 void HAL_TIM_PeriodElaps…

vue3+ts白屏问题解决

文章目录 打开白屏解决方法可能出现问题使用base导致的使用baseUrl导致的 注意点vue3ts白屏问题知识分享 打开白屏 解决方法 在vue.config.js页面 添加publicPath:./, const { defineConfig } require(vue/cli-service)module.exports defineConfig({ transpileDependenci…

Nginx-记

Nginx是一个高性能的web服务器和反向代理服务器&#xff0c;用于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 &#xff08;1&#xff09;更快 这表现在两个方面&#xff1a;一方面&#xff0c;在正常情况下&…

工业无线网关在汽车制造企业的应用效果和价值-天拓四方

随着智能制造的快速发展&#xff0c;工业无线网关作为关键通信设备&#xff0c;在提升生产效率、优化生产流程、实现设备间的互联互通等方面发挥着越来越重要的作用。以下是一个关于工业无线网关在智能制造行业应用的具体案例&#xff0c;展示了其在实际生产中的应用效果和价值…

Nomad Web更新没有最快只有更快

大家好&#xff0c;才是真的好。 很长时间没介绍运行在浏览器中的Notes客户端即Nomad Web更新情况。 不用安装&#xff0c;直接使用&#xff0c;还可以完美地兼容适应各种操作系统&#xff0c;Nomad Web一定是Notes/Domino产品现在和将来重点发展的用户访问模式。 不过&…

C语言例4-34:找出11~100所有不能被5整除的整数,要求在第n行输出10*n+1~10*(n+1)之间符合要求的数

代码如下&#xff1a; //找出11~100所有不能被5整除的整数&#xff0c;要求在第n行输出10*n1~10*(n1)之间符合要求的数 #include<stdio.h> int main(void) {int i;for(i11;i<100;i) //遍历11~100的所有整数{if(i%100){printf("\n");continue; /…

【Leetcode每日一题】 动态规划 - 不同路径(难度⭐⭐)(46)

1. 题目解析 题目链接&#xff1a;62. 不同路径 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 想要解决这个问题&#xff0c;我们得像个侦探一样&#xff0c;一步步地追踪路径&#xff0c;找出所有可能的走法。接下…

uinapp触底与下拉时间触发的使用

在UniApp中&#xff0c;onReachBottom 和 onPullDownRefresh 是两个重要的生命周期函数&#xff0c;分别用于处理页面滚动到底部时触发的事件和下拉刷新时触发的事件。 在页面的 .vue 文件中&#xff1a; <template> <view> <scroll-view scroll-y"tr…