Qt绘图(label上显示图片、显示图片+画线)

在label上绘图片:

方法一:
在label上直接调用setPixmap方法。

ui->lab_videoPlayer->setPixmap(QPixmap::fromImage(image));    //显示图片
ui->lab_videoPlayer->setScaledContents(true);    //label自适应大小

方法二:
①随便重写一个类,例如MyLabel类,继承自 QWidget ,类中重写paintEvent方法。
②重写paintEvent方法用QPainter画。
painter.drawImage(QPoint(x, y), image);     //显示图片

class MyLabel: public QWidget
{
    Q_OBJECT
    public:
        MyLabel(QWidget *parent);
        ~MyLabel();
    protected:
        void paintEvent(QPaintEvent *event);
}

MyLabel::MyLabel(QWidget *parent)
:  QLabel(parent)
{...}

void MyFFmpeg::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
m_painter. resize(width ,height);     //重要 ,注意绘图窗口显示不全的问题
    ...
    painter.drawImage(QPoint(x, y), img);
}

//使用方法:创建MylLabel 对象,时传入ui作为窗口。
MylLabel(ui.label);
resize(ui->lab_videoPlayer->size().width(), ui->lab_videoPlayer->size().height());
//适当位置处,修改绘图类的尺寸,否则窗口不全。类似于窗口布局


在label上绘图片后,在图片上画线:

方法一:在QImage图片上画线。

//上述方法一基础上,重写paintEvent方法
QPainter painter(&image);
painter.drawLine(0,0,600,600);

方法二:上述方法直接用,图层一起显示

painter.drawLine(0,0,600,600); 
painter.drawImage(QPoint(x, y), img);
...

你可能感兴趣的:(Qt绘图(label上显示图片、显示图片+画线))