ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
imagecompareboard.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include "imagecompareboard.h"
9 
10 #include <QHBoxLayout>
11 #include <QLabel>
12 #include <QScrollArea>
13 #include <QScrollBar>
14 #include <QSplitter>
15 
16 namespace Widgets {
17 
18 class ImageCompareBoardPrivate {
19 public:
20  QLabel* originalImgLabel;
21  QLabel* comparedImgLabel;
22 
23  QImage originalImg;
24  QImage comparedImg;
25 };
26 
27 ImageCompareBoard::ImageCompareBoard(QWidget* parent) : QWidget(parent) {
28  d_ptr = new ImageCompareBoardPrivate;
29 
30  d_ptr->originalImgLabel = new QLabel(this);
31  d_ptr->comparedImgLabel = new QLabel(this);
32 
33  QHBoxLayout* layout = new QHBoxLayout;
34 
35  QSplitter* splitter = new QSplitter(Qt::Horizontal, this);
36  splitter->setHandleWidth(1);
37  QScrollArea* originScrollArea = new QScrollArea(this);
38  originScrollArea->setWidgetResizable(true);
39  QScrollArea* compareScrollArea = new QScrollArea(this);
40  compareScrollArea->setWidgetResizable(true);
41  originScrollArea->setWidget(d_ptr->originalImgLabel);
42  compareScrollArea->setWidget(d_ptr->comparedImgLabel);
43  splitter->addWidget(originScrollArea);
44  splitter->addWidget(compareScrollArea);
45 
46  layout->addWidget(splitter);
47  setLayout(layout);
48 
49  // sync with each other
50  connect(originScrollArea->horizontalScrollBar(), SIGNAL(valueChanged(int)),
51  compareScrollArea->horizontalScrollBar(), SLOT(setValue(int)));
52  connect(compareScrollArea->horizontalScrollBar(), SIGNAL(valueChanged(int)),
53  originScrollArea->horizontalScrollBar(), SLOT(setValue(int)));
54  connect(compareScrollArea->verticalScrollBar(), SIGNAL(valueChanged(int)),
55  originScrollArea->verticalScrollBar(), SLOT(setValue(int)));
56  connect(originScrollArea->verticalScrollBar(), SIGNAL(valueChanged(int)),
57  compareScrollArea->verticalScrollBar(), SLOT(setValue(int)));
58 
59  // hide them initially
60  d_ptr->originalImgLabel->hide();
61  d_ptr->comparedImgLabel->hide();
62 }
63 
65 
66 void ImageCompareBoard::setOriginalImage(const QImage& img) {
67  d_ptr->originalImgLabel->setPixmap(QPixmap::fromImage(img));
68  d_ptr->originalImgLabel->show();
69 }
70 
71 QImage ImageCompareBoard::originalImage() const { return d_ptr->originalImg; }
72 
73 void ImageCompareBoard::setComparedImage(const QImage& img) {
74  d_ptr->comparedImgLabel->setPixmap(QPixmap::fromImage(img));
75  d_ptr->comparedImgLabel->show();
76 }
77 
78 QImage ImageCompareBoard::comparedImage() const { return d_ptr->comparedImg; }
79 
80 } // namespace Widgets
ImageCompareBoard(QWidget *parent=0)
void setComparedImage(const QImage &img)
void setOriginalImage(const QImage &img)