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

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.dtcms.com/a/269588.html

相关文章:

  • 代码详细注释:演示如何使用dup()系统调用复制文件描述符
  • Linux操作系统:再谈虚拟地址空间
  • const char* 、char*和char[]的区别
  • MySQL数据库访问(C/C++)
  • 恒创科技:香港站群服务器做seo站群优化效果如何
  • 2025年数据挖掘与计算机科学国际会议 (DMCS 2025)
  • 基于Docker Compose部署Traccar容器与主机MySQL的完整指南
  • 专题:2025数据资产AI价值化:安全、战略与应用报告|附400+份报告PDF、原数据表汇总下载
  • uniapp 监听物理返回按钮
  • 分水岭算法:图像分割的浸水原理
  • 视频号账号矩阵运营中定制开发开源 AI 智能名片 S2B2C 商城小程序的赋能研究
  • 【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回
  • 【Rust base64库】Rust bas64编码解码详细解析与应用实战
  • ​​​​​​​营销费用管理,如何驱动快消企业营销投资战略升级
  • 萌新赛第(一)场
  • IEEE Fellowe助力 2025年物联网、数据科学与先进计算国际学术会议(IDSAC2025)
  • C++——string的了解和使用
  • 将oracle表字段json字符串分解提取并返回单列表
  • Redis基础数据结构
  • 深度学习与图像处理 | 基于传统图像处理的自动驾驶车道线检测
  • XSLT注入与安全修复方法
  • 【快手】数据挖掘面试题0002:求某地铁站每日客流量,乘地铁经过、进出站人都包括在内
  • C#随机数生成全面详解:从基础到高级应用
  • 【ROS2 自动驾驶学习】03-ROS2常用命令
  • 网络安全护网实战:攻击手段解析与防御策略
  • 基于odoo17的设计模式详解---工厂模式
  • 阿里云mysql数据丢失,如何通过服务器备份在其他服务器上恢复数据,并获取mysql丢失数据,完成mysql数据恢复
  • Prompt Injection Attack to Tool Selection in LLM Agents
  • 深度剖析:向70岁老系统植入通信芯片——MCP注入构建未来级分布式通信
  • IP 能ping通,服务器是否开机?