资源简介
使用QT实现的图片自定义大小剪切, 主要用户用户头像裁剪。
代码片段和文件信息
#include “cutdialog.h“
#include
CutDialog::CutDialog(QWidget *parent) :m_isMoving(false) m_mouse_down(false)
Qframe(parent) m_left(false) m_right(false) m_top(false) m_bottom(false)
{
setWindowFlags(Qt::framelessWindowHint);
setMouseTracking(true);
setGeometry(00100100);
label = new QLabel(this);
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(label);
layout->setMargin(0);
setLayout(layout);
label->setMouseTracking(true);
}
CutDialog::~CutDialog()
{
}
void CutDialog::resizeEvent(QResizeEvent *event)
{
}
void CutDialog::mousePressEvent(QMouseEvent * event)
{
m_startPoint = event->pos();
m_mouse_down = event->button() == Qt::LeftButton;
}
void CutDialog::paintEvent(QPaintEvent *event)
{
QPainter paint(this);
QPen pen;
QVector dashes;
qreal space = 3;
dashes << 5 << space << 5 < pen.setDashPattern(dashes);
pen.setColor(Qt::white);
QPen pen0;
pen0.setColor(QColor(54158254120));
pen0.setWidth(2);
paint.setPen(pen0);
paint.drawRect(10width()-2width()-2);
paint.setPen(pen);
int x_pos = (int) width()/3.0;
int y_pos = (int) height()/3.0;
paint.drawLine(x_pos 0 x_pos height());
paint.drawLine(2*x_pos 0 2*x_pos height());
paint.drawLine(0 y_pos width() y_pos);
paint.drawLine(0 2*y_pos width() 2*y_pos);
paint.drawEllipse(00width() width());
}
QRect CutDialog::getResizeGem(QRect oldgeo QPoint mousePoint)
{
QRect g = oldgeo;
bool lorr = m_left | m_right;
bool torb = m_top | m_bottom;
int dx = mousePoint.x() - m_startPoint.x();
int dy = mousePoint.y() - m_startPoint.y();
if(lorr && torb)
{
int maxLen = qMin(qAbs(dx)qAbs(dy));
if(m_left && m_top && dx*dy >0)
{
g.setLeft(dx >0 ?g.left() + maxLen : g.left() - maxLen);
g.setTop(dy >0? g.top() + maxLen : g.top() - maxLen);
}
if(m_right && m_top && dx*dy < 0)
{
g.setRight(dx>0 ? g.right() + maxLen:g.right() - maxLen);
g.setTop(dy >0? g.top() + maxLen : g.top() - maxLen);
}
if(m_right && m_bottom && dx*dy > 0)
{
g.setRight(dx>0 ? g.right() + maxLen:g.right() - maxLen);
g.setBottom(dy >0? g.bottom() + maxLen : g.bottom() - maxLen);
}
if(m_left && m_bottom && dx*dy < 0)
{
g.setLeft(dx >0 ?g.left() + maxLen : g.left() - maxLen);
g.setBottom(dy >0? g.bottom() + maxLen : g.bottom() - maxLen);
}
return g;
}
else if(lorr)
{
if(m_left)
g.setLeft(g.left() + dx);
if(m_right)
g.setRight(g.right() + dx);
int len = g.width() - oldgeo.width();
int intHight = (int) len/2.0;
g.setTop(g.top() - intHight);
g.setBottom(g.bottom() + len - intHight);
}
else if(torb)
{
if(m_bottom)
g.setBottom(g.bottom() + dy);
if(m_top)
g.setTop(g.top() + dy);
int dheigt = g.height() - oldgeo.height();
int intWidth = (int) dheigt/2.0;
g.setLeft(g.left() - intWidth);
g.setRight(g.right() + dheigt - intWidth);
}
re
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-10-20 19:25 PictureEdit\
文件 19510 2015-02-27 14:37 PictureEdit\3h.png
目录 0 2015-10-20 18:39 PictureEdit\ipch\
目录 0 2015-10-20 19:08 PictureEdit\ipch\pictureedit-f3be604e\
文件 61014016 2015-10-20 19:08 PictureEdit\ipch\pictureedit-f3be604e\pictureedit-c7c2c0ae.ipch
目录 0 2015-02-28 14:17 PictureEdit\PictureEdit\
文件 23220224 2015-10-20 19:25 PictureEdit\PictureEdit.sdf
文件 900 2015-01-29 10:09 PictureEdit\PictureEdit.sln
文件 77312 2015-10-20 19:25 PictureEdit\PictureEdit.suo
文件 4708 2015-10-20 19:08 PictureEdit\PictureEdit\cutdialog.cpp
文件 874 2015-10-20 18:59 PictureEdit\PictureEdit\cutdialog.h
目录 0 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\
文件 15254 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\cl.command.1.tlog
文件 268252 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\CL.read.1.tlog
文件 27904 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\CL.write.1.tlog
文件 8670 2015-10-20 18:59 PictureEdit\PictureEdit\Debug\custombuild.command.1.tlog
文件 2434 2015-10-20 18:59 PictureEdit\PictureEdit\Debug\custombuild.read.1.tlog
文件 3754 2015-10-20 18:59 PictureEdit\PictureEdit\Debug\custombuild.write.1.tlog
文件 138581 2015-10-20 19:12 PictureEdit\PictureEdit\Debug\cutdialog.obj
文件 3676 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\li
文件 6508 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\li
文件 2400 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\li
文件 94300 2015-10-20 18:41 PictureEdit\PictureEdit\Debug\main.obj
文件 74098 2015-10-20 18:59 PictureEdit\PictureEdit\Debug\moc_cutdialog.obj
文件 60129 2015-02-26 09:39 PictureEdit\PictureEdit\Debug\moc_myba
文件 73196 2015-10-20 18:59 PictureEdit\PictureEdit\Debug\moc_PhotoShotDialog.obj
文件 98216 2015-10-20 18:41 PictureEdit\PictureEdit\Debug\moc_pictureedit.obj
文件 618 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\mt.command.1.tlog
文件 804 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\mt.read.1.tlog
文件 432 2015-10-20 19:24 PictureEdit\PictureEdit\Debug\mt.write.1.tlog
文件 86735 2015-02-15 14:38 PictureEdit\PictureEdit\Debug\myba
............此处省略42个文件信息
- 上一篇:地理信息系统原理与方法 吴信才
- 下一篇:机翼设计软件
相关资源
- Qt词典软件源代码
- 基于TCP、QT带虚拟键盘的多功能聊天系
- QVision-基于Qt的计算机视觉库
-
fr
ameLessWinApiQt无边框窗口调用winAP - QT聊天系统
- OpenCV345_build_MinGW32bit
- Qt+pcl+vtk 屏幕选点
- QxEntityEditor_1.2.5_setup_win64
- IEC-104规约Qt实现
- 基于QT和windows api实现的远程桌面控制
- labelImg_qt5py3_mac_latest 2.zip
- OpenCV 3和Qt5计算机视觉应用开发英文版
- 海康工业相机二次开发源码 + OpenCV3
- QT5开发及各种
- 嵌入式linux下QT开发的mp3播放器源码
- GSL库(64bit)在QT5.50中使用+VS2013编译
- PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe
- 编译器mingw4.4.0 Qt
- 用PyQT5多线程爬取轻小说工具
- PyQt5开发与实战源代码
- KinectV2 in Qt 在Qt中使用KinectV2编程
- 交叉编译QT5.6
- QT+OpenCV+VS Gerber光绘文件识别
- Qt使用动态图当背景图片,上边放置各
- Qt动态心电图绘制-利用队列进行实时
- QT版拼图游戏PuzzleGame源码+可执行程序
- 基于opencv的二维码畸变矫正QT程序
- 基于qt平台的halcon读图的basler相机调用
- Qt 合集
- 毕业设计-QT-音乐播放器
评论
共有 条评论