Qt:图片切割

void MainWindow::on_action_slice_triggered()
{QDialog *dialog = new QDialog(this);dialog->setWindowTitle("切割");dialog->setFixedSize(200, 150);QVBoxLayout *vbox = new QVBoxLayout;QHBoxLayout *hbox = new QHBoxLayout;QLabel *label = new QLabel("方向");hbox->addWidget(label);QComboBox *comboBox = new QComboBox;QStringList SL_direction;SL_direction << "竖向" << "横向";comboBox->addItems(SL_direction);hbox->addWidget(comboBox);vbox->addLayout(hbox);hbox = new QHBoxLayout;label = new QLabel("份数");hbox->addWidget(label);QLineEdit *lineEdit = new QLineEdit;QString sn = settings.value("Slice", "5").toString();lineEdit->setText(sn);hbox->addWidget(lineEdit);vbox->addLayout(hbox);label = new QLabel;label->setAlignment(Qt::AlignCenter);vbox->addWidget(label);connect(comboBox, &QComboBox::currentTextChanged, [=]{label->setText("");});connect(lineEdit, &QLineEdit::textChanged, [=]{label->setText("");});QPushButton *pushButton_confirm = new QPushButton("确定");QPushButton *pushButton_cancel = new QPushButton("取消");hbox = new QHBoxLayout;hbox->addStretch();hbox->addWidget(pushButton_confirm);hbox->addWidget(pushButton_cancel);hbox->addStretch();vbox->addLayout(hbox);dialog->setLayout(vbox);    dialog->show();connect(pushButton_confirm, &QPushButton::clicked, [=]{bool b;int n = lineEdit->text().toInt(&b, 10);if (b) {for (int i=0; i<n; i++) {QImage image;if (comboBox->currentIndex() == 0) {int dy = imageWidget->image.height() / n;image = imageWidget->image.copy(0, dy * i, imageWidget->image.width(), dy);} else if (comboBox->currentIndex() == 1) {int dx = imageWidget->image.width() / n;image = imageWidget->image.copy(dx * i, 0, dx, imageWidget->image.height());}QString fp = "";if (path == "")fp = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/" + comboBox->currentText() + QString::number(i) + ".png";elsefp = QFileInfo(path).path() + "/" + QFileInfo(filename).baseName() + comboBox->currentText() + QString::number(i) + "." + QFileInfo(filename).suffix();//qDebug() << fp;image.save(fp, nullptr, 100);label->setText("切割:" + comboBox->currentText() + " " + QString::number(i+1) + "/" + QString::number(n));}settings.setValue("Slice", lineEdit->text());} else {QMessageBox::critical(dialog, "错误", "份数不是数字");}});connect(pushButton_cancel, &QPushButton::clicked, [=]{dialog->close();});
}

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

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

相关文章

BabelDOC,一个专为学术PDF文档设计的翻译和双语对比工具

你是否也有这样的困境&#xff0c;面对一篇学术论文&#xff0c;即使英语水平不错&#xff0c;仍需反复查词典&#xff0c;尤其是遇到专业术语和复杂长句&#xff0c;翻译软件又常常不能很好地处理学术PDF的排版&#xff0c;导致翻译结果混乱不堪。 现在&#xff0c;解决你烦恼…

Python之面向对象和类

一.类1.类的定义&#xff1a;class 类名&#xff1a;“”“注释 ”“”pass2.实例的创建&#xff1a;实例 类名(parameterlist)parameterlist&#xff1a;定义类时__init__()方法的参数&#xff0c;如果该方法只有一个self参数&#xff0c;parameterlist可以省略class Goose()…

【力扣 困难 C】329. 矩阵中的最长递增路径

目录 题目 解法一 题目 待添加 解法一 int max(int a, int b) {return a > b ? a : b; }int search(int** matrix, int m, int n, int i, int j, int (*dp)[n]) {if (dp[i][j]) {return dp[i][j];}int len 0;if (i > 0 && matrix[i - 1][j] > matrix[i]…

Blueprints - UE5的增强输入系统

一些学习笔记归档&#xff1b;增强输入系统由两部分组成&#xff1a;Input Action和Input Mapping ContextInput Action是输入操作的映射&#xff08;操作中比如有移动、跳跃等&#xff09;&#xff0c;Input Mapping Context是输入情境的映射&#xff08;对各种操作的具体按键…

Python 【技术面试题和HR面试题】➕ 动态类型、运算符、输入处理及算法编程问答

1.技术面试题 &#xff08;1&#xff09;TCP与UDP的区别是什么&#xff1f; 答&#xff1a; ①连接性&#xff1a;TCP 面向连接&#xff0c;3次握手及4次挥手&#xff0c;建立端到端的虚链路像&#xff1b;UDP 无连接&#xff0c;直接发送&#xff0c;无需预先建立连接 。 ②传…

etcd-cpp-apiv3 二次封装

接口介绍头文件#include <etcd/Client.hpp> #include <etcd/KeepAlive.hpp> #include <etcd/Response.hpp> #include <etcd/SyncClient.hpp> #include <etcd/Value.hpp> #include <etcd/Watcher.hpp>下面从功能介绍几个类的概念Value &…

【网络与系统安全】强制访问控制——Biba模型

一、模型定义与目标 提出背景&#xff1a;1977年由Ken Biba提出&#xff0c;是首个完整性安全模型&#xff0c;与BLP模型形成对偶&#xff08;BLP关注机密性&#xff0c;Biba关注完整性&#xff09;。核心目标&#xff1a;防止低完整性信息污染高完整性信息&#xff0c;避免未授…

从架构抽象到表达范式:如何正确理解系统架构中的 4C 模型20250704

&#x1f9e9; 从架构抽象到表达范式&#xff1a;如何正确理解系统架构中的 4C 模型&#xff1f; “4C”到底是架构的组成结构&#xff0c;还是架构图的表现方式&#xff1f;这类看似细节的问题&#xff0c;其实直击了我们在系统设计中认知、表达与落地之间的张力。 &#x1f5…

Debian10安装Mysql5.7.44 笔记250707

Debian10安装Mysql5.7.44 笔记250707 1️⃣ 参考 1 在Debian 10 (Buster) 上安装 MySQL 5.7.44 的步骤如下&#xff1a; 1. 添加 MySQL APT 仓库 MySQL 官方提供了包含特定版本的仓库&#xff1a; # 下载仓库配置包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.28…

20250706-6-Docker 快速入门(上)-镜像是什么?_笔记

一、镜像是什么&#xfeff;1. 一个分层存储的文件&#xff0c;不是一个单一的文件分层结构: 与传统ISO文件不同&#xff0c;Docker镜像由多个文件组成&#xff0c;采用分层存储机制存储优势: 每层可独立复用&#xff0c;显著减少磁盘空间占用&#xff0c;例如基础层可被多个镜…

[SystemVerilog] Clocking

SystemVerilog Clocking用法详解 SystemVerilog 的 clocking 块&#xff08;Clocking Block&#xff09;是一种专门用于定义信号时序行为的构造&#xff0c;主要用于验证环境&#xff08;如 UVM&#xff09;中&#xff0c;以精确控制信号的采样和驱动时序。clocking 块通过将信…

kong网关基于header分流灰度发布

kong网关基于header分流灰度发布 在现代微服务架构中&#xff0c;灰度发布&#xff08;Canary Release&#xff09;已经成为一种常用且安全的上线策略。它允许我们将新版本的功能仅暴露给一小部分用户&#xff0c;从而在保证系统稳定性的同时收集反馈、验证效果、规避风险。而作…

Go语言gin框架原理

在gin框架中&#xff0c;最关键的就是前缀树&#xff0c;是很重要的。gin框架本质上是在http包的基础之上&#xff0c;对其的一个二次封装。这里借鉴一下小徐先生的图&#xff0c;可能当前版本的gin可能内容有所改变&#xff0c;但大致思想还是这样。gin框架所做的就是提供一个…

4、Sending Messages

本节介绍如何发送消息。Using KafkaTemplate本节介绍如何使用KafkaTemplate发送消息。OverviewKafkaTemplate封装了一个生产者&#xff0c;并提供了向Kafka主题发送数据的便利方法。以下列表显示了KafkaTemplate的相关方法&#xff1a;CompletableFuture<SendResult<K, V…

CSS长度单位问题

在 CSS 中&#xff0c;100px 的逻辑长度在不同分辨率的手机屏幕上是否表现一致&#xff0c;取决于 设备的像素密度&#xff08;devicePixelRatio&#xff09; 和 视口&#xff08;viewport&#xff09;的缩放设置。以下是详细分析&#xff1a;1. 核心概念 CSS 像素&#xff08;…

基于Java+SpringBoot的图书管理系统

源码编号&#xff1a;S606源码名称&#xff1a;基于SpringBoot的图书管理系统用户类型&#xff1a;双角色&#xff0c;用户、管理员数据库表数量&#xff1a;12 张表主要技术&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven运行环境&#xff1a;Windows/Mac、JDK1.8及以…

XTOM工业级蓝光三维扫描仪用于笔记本电脑背板模具全尺寸检测

镁合金具有密度小、强度高、耐腐蚀性好等优点&#xff0c;成为笔记本电脑外壳主流材料。冲压模具作为批量生产笔记本电脑镁合金背板的核心工具&#xff0c;其精度直接决定了产品的尺寸一致性、结构可靠性与外观品质。微米级模具误差可能在冲压过程中被放大至毫米级&#xff08;…

运维打铁: MongoDB 数据库集群搭建与管理

文章目录思维导图一、集群基础概念1. 分片集群2. 副本集二、集群搭建1. 环境准备2. 配置副本集步骤 1&#xff1a;修改配置文件步骤 2&#xff1a;启动 MongoDB 服务步骤 3&#xff1a;初始化副本集3. 配置分片集群步骤 1&#xff1a;配置配置服务器副本集步骤 2&#xff1a;启…

HCIP-Datacom Core Technology V1.0_5 OSPF特殊区域及其他特性

在前面的章节中&#xff0c;OSPF可以划分区域&#xff0c;减轻单区域里面LSDB的规模&#xff0c;从而减轻路由器的负荷&#xff0c;虽然OSPF能够划分区域&#xff0c;但是依旧需要维护域间路由和外部路由&#xff0c;这样随着网络规模的不断扩大&#xff0c;路由器所维护的LSDB…

实时开发IDE部署指南

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨杭州奥零数据科技官网&#xff…