56 lines
1.1 KiB
C++
Executable File
56 lines
1.1 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* A QLabel that rescales the set pixmap with respect of the current aspect ratio
|
|
* $Id: flm_preview_file_dialog.cpp 52224 2020-09-30 12:31:15Z ojog_i $
|
|
* $HeadURL: svn://192.168.133.21/TDS/branches/product/iterations/21_01_chaos/Lts/Plugins/FileManagement/Gui/Explorer/flm_preview_file_dialog.cpp $
|
|
* $Author: ojog_i $
|
|
*
|
|
* Created by Mike Wille, SLTE, 2020-03-03
|
|
*/
|
|
|
|
#include "RatioAwareLabel.h"
|
|
|
|
|
|
RatioAwareLabel::RatioAwareLabel(QWidget *parent)
|
|
: QLabel(parent)
|
|
{
|
|
setScaledContents(false);
|
|
}
|
|
|
|
|
|
void RatioAwareLabel::setPixmap(const QPixmap &pixmap)
|
|
{
|
|
m_pixmap = pixmap;
|
|
scale();
|
|
}
|
|
|
|
|
|
int RatioAwareLabel::heightRatio(int width) const
|
|
{
|
|
if (m_pixmap.isNull())
|
|
return height();
|
|
return (m_pixmap.height() * width / m_pixmap.width());
|
|
}
|
|
|
|
|
|
QSize RatioAwareLabel::sizeHint() const
|
|
{
|
|
int w = width();
|
|
return QSize(w, heightRatio(w));
|
|
}
|
|
|
|
|
|
void RatioAwareLabel::scale()
|
|
{
|
|
if (m_pixmap.isNull())
|
|
return;
|
|
QLabel::setPixmap(m_pixmap.scaled(size(), Qt::KeepAspectRatio, Qt::FastTransformation));
|
|
}
|
|
|
|
|
|
void RatioAwareLabel::resizeEvent(QResizeEvent *event)
|
|
{
|
|
QLabel::resizeEvent(event);
|
|
scale();
|
|
}
|