在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);
...