mirror of
https://gitee.com/drabel/LibQQt.git
synced 2025-01-04 10:18:44 +08:00
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
|
#include "qqtwidget.h"
|
|||
|
#include "ui_qqtwidget.h"
|
|||
|
#include <QStylePainter>
|
|||
|
#include "qqtdefine.h"
|
|||
|
|
|||
|
QQTWidget::QQTWidget(QWidget *parent) :
|
|||
|
QWidget(parent),
|
|||
|
ui(new Ui::QQTWidget)
|
|||
|
{
|
|||
|
ui->setupUi(this);
|
|||
|
m_type = QQTCENTER;
|
|||
|
}
|
|||
|
|
|||
|
QQTWidget::~QQTWidget()
|
|||
|
{
|
|||
|
delete ui;
|
|||
|
}
|
|||
|
|
|||
|
void QQTWidget::setPixmap(QString pic)
|
|||
|
{
|
|||
|
m_pic = pic;
|
|||
|
}
|
|||
|
|
|||
|
void QQTWidget::paintEvent(QPaintEvent *)
|
|||
|
{
|
|||
|
QStylePainter p(this);
|
|||
|
if(m_pic.isEmpty())
|
|||
|
return;
|
|||
|
|
|||
|
QImage image(m_pic);
|
|||
|
switch (m_type) {
|
|||
|
case QQTCENTER:
|
|||
|
p.drawItemPixmap(rect(), Qt::AlignCenter, QIcon(m_pic).pixmap(rect().size(), QIcon::Normal, QIcon::On));
|
|||
|
break;
|
|||
|
case QQTTILEDWIDTH:
|
|||
|
//会产生label的效果,左右按照rect长,但是不缩放形状
|
|||
|
p.drawItemPixmap(rect(), Qt::AlignLeft | Qt::AlignTop,
|
|||
|
QPixmap::fromImage(image.copy(rect())
|
|||
|
.scaledToWidth(rect().width())
|
|||
|
));
|
|||
|
break;
|
|||
|
case QQTZOOMWIDTH:
|
|||
|
p.drawItemPixmap(rect(), Qt::AlignLeft | Qt::AlignTop,
|
|||
|
QPixmap::fromImage(image
|
|||
|
.scaled(rect().width(), image.height(), Qt::IgnoreAspectRatio)
|
|||
|
));
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|