在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);
}
//使用方法:創(chuàng)建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);
...