24,854
社区成员
发帖
与我相关
我的任务
分享
void Widget::openPictureSlot()
{
qDebug()<<"openpicture";
QImage *image=new QImage("E:/code/picture_test/images/imgMB.bmp");
QImage* imgScaled = new QImage;
*imgScaled=image->scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);
ui->label->setPixmap(QPixmap::fromImage(*imgScaled));
}
层主解决了吗?求告知 [quote=引用 13 楼 baidu_37495190 的回复:] 问题好久 了,我现在遇到了这个问题。楼主以前怎么解决的
问题好久 了,我现在遇到了这个问题。楼主以前怎么解决的
层主解决了吗?求告知 问题好久 了,我现在遇到了这个问题。楼主以前怎么解决的
#ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
#include <QPoint>
#include <QColor>
#include <QPaintEvent>
#include <QImage>
#include <QPixmap>
class myLabel : public QLabel
{
//Q_OBJECT //必须没有,要不然会报错,因为Label不是Widget等
public:
myLabel();
//~myLabel();
//绘制线条
virtual void paintEvent(QPaintEvent *event) override;
//鼠标按下
void mousePressEvent(QMouseEvent *e);
//鼠标移动
void mouseMoveEvent(QMouseEvent *e);
//鼠标抬起
void mouseReleaseEvent(QMouseEvent *e);
//设置所画线条属性
void setLineColor(const QColor lineColor);
void setLineSize(const int lineSize);
//得到画线的起点和终点
QPoint getStartPoint();
QPoint getEndPoint();
//将图片设置为背景
void setImage(const QImage &pic);
void clear();
private:
QPoint lineStartPoint; //画线起点
QPoint lineEndPoint; //画线终点
QColor lineColor; //线条颜色
int lineSize; //5种线型
bool isPressed;
};
#endif // MYLABEL_H
myLabel.cpp
#include "myLabel.h"
#include <QPen>
#include<QPainter>
myLabel::myLabel()
{
this->lineStartPoint = QPoint(0,0);
this->lineEndPoint = QPoint(0,0);
this->lineColor = QColor(Qt::black);
this->lineSize = 3;
}
//绘制线条
void myLabel::paintEvent(QPaintEvent *event)
{
QLabel::paintEvent(event);//必须有,才能让自己设置的背景图片显示出来
QPainter painter(this);
QPen pen;
pen.setColor(lineColor);
pen.setWidth(lineSize);
painter.setPen(pen);
painter.drawLine(lineStartPoint,lineEndPoint);
}
//鼠标按下
void myLabel::mousePressEvent(QMouseEvent *e)
{
lineStartPoint = e->pos();
lineEndPoint = e->pos();
//在图片上绘制
isPressed = true;
}
//鼠标移动
void myLabel::mouseMoveEvent(QMouseEvent *e)
{
if(isPressed)
{
lineEndPoint=e->pos();
update();
}
}
//鼠标抬起
void myLabel::mouseReleaseEvent(QMouseEvent *e)
{
isPressed=false;
update();
}
void myLabel::setLineColor(const QColor lineColor)
{
this->lineColor = lineColor;
}
void myLabel::setLineSize(const int lineSize)
{
this->lineSize = lineSize;
}
QPoint myLabel::getStartPoint()
{
return lineStartPoint;
}
QPoint myLabel::getEndPoint()
{
return lineEndPoint;
}
void myLabel::setImage(const QImage &pic)
{
this->setPixmap(QPixmap::fromImage(pic));
}
void myLabel::clear()
{
lineStartPoint = QPoint(0,0);
lineEndPoint = QPoint(0,0);
update();
}
问题好久 了,我现在遇到了这个问题。楼主以前怎么解决的
[quote=引用 10 楼 Night_rover 的回复:] [quote=引用 8 楼 fly_dragon_fly 的回复:] [quote=引用 7 楼 Night_rover 的回复:] [quote=引用 6 楼 fly_dragon_fly 的回复:] 继承一个QLabel, 然后在paintEvent中画
[quote=引用 8 楼 fly_dragon_fly 的回复:] [quote=引用 7 楼 Night_rover 的回复:] [quote=引用 6 楼 fly_dragon_fly 的回复:] 继承一个QLabel, 然后在paintEvent中画
[quote=引用 6 楼 fly_dragon_fly 的回复:] 继承一个QLabel, 然后在paintEvent中画
[quote=引用 7 楼 Night_rover 的回复:] [quote=引用 6 楼 fly_dragon_fly 的回复:] 继承一个QLabel, 然后在paintEvent中画
继承一个QLabel, 然后在paintEvent中画