-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwidget.cpp
More file actions
69 lines (61 loc) · 1.6 KB
/
widget.cpp
File metadata and controls
69 lines (61 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "widget.h"
#include "ui_widget.h"
#include "convertor.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
_noImageMessage = "Use doble click to load picture";
_backgroundColor = Qt::white;
connect(this,SIGNAL(pixmapChanged()),SLOT(repaint()));
ui->setupUi(this);
}
int rgbToHex(QRgb color){
int red = qRed(color);
int green =qGreen(color);
int blue = qBlue(color);
return red*65536+green*256+blue;
}
Widget::~Widget()
{
delete ui;
}
void Widget::setPixmap(QPixmap pixmap)
{
_originalImage = pixmap;
emit pixmapChanged();
}
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
if(event->button() !=Qt::LeftButton)
return;
QString filename = QFileDialog::getOpenFileName(this,tr("Open image"),QDir::homePath(),tr("Image Files (*.png *.jpg *.bmp)"));
if(filename.isEmpty())
return;
setPixmap(QPixmap(filename));
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.save();
painter.setBrush(_backgroundColor);
painter.drawRect(rect());
painter.restore();
if(_originalImage.isNull()){
painter.drawText(rect(),Qt::AlignCenter,_noImageMessage);
}
else{
QRect imageRect = rect();
painter.drawPixmap(imageRect,_originalImage);
}
}
void Widget::on_pushButton_clicked()
{
QImage img = _originalImage.toImage();
QMessageBox *mes = new QMessageBox;
Convertor *convertor = new Convertor();
if(!_originalImage.isNull()){
convertor->convert(_originalImage);
}
}