资源简介

使用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\link.command.1.tlog
     文件        6508  2015-10-20 19:24  PictureEdit\PictureEdit\Debug\link.read.1.tlog
     文件        2400  2015-10-20 19:24  PictureEdit\PictureEdit\Debug\link.write.1.tlog
     文件       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_mybasedialog.obj
     文件       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\mybasedialog.obj
............此处省略42个文件信息

评论

共有 条评论