改进视频控件

This commit is contained in:
feiyangqingyun
2020-06-22 10:14:30 +08:00
parent 7276827067
commit 6b9918adac
2 changed files with 16 additions and 14 deletions

View File

@@ -198,7 +198,7 @@ void VideoWidget::dropEvent(QDropEvent *event)
{ {
//拖放完毕鼠标松开的时候执行 //拖放完毕鼠标松开的时候执行
//判断拖放进来的类型,取出文件,进行播放 //判断拖放进来的类型,取出文件,进行播放
if(event->mimeData()->hasUrls()) { if (event->mimeData()->hasUrls()) {
QString url = event->mimeData()->urls().first().toLocalFile(); QString url = event->mimeData()->urls().first().toLocalFile();
this->close(); this->close();
this->setUrl(url); this->setUrl(url);
@@ -219,10 +219,10 @@ void VideoWidget::dropEvent(QDropEvent *event)
void VideoWidget::dragEnterEvent(QDragEnterEvent *event) void VideoWidget::dragEnterEvent(QDragEnterEvent *event)
{ {
//拖曳进来的时候先判断下类型,非法类型则不处理 //拖曳进来的时候先判断下类型,非法类型则不处理
if(event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) { if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {
event->setDropAction(Qt::CopyAction); event->setDropAction(Qt::CopyAction);
event->accept(); event->accept();
} else if(event->mimeData()->hasFormat("text/uri-list")) { } else if (event->mimeData()->hasFormat("text/uri-list")) {
event->setDropAction(Qt::LinkAction); event->setDropAction(Qt::LinkAction);
event->accept(); event->accept();
} else { } else {
@@ -243,20 +243,12 @@ void VideoWidget::paintEvent(QPaintEvent *)
//绘制边框 //绘制边框
drawBorder(&painter); drawBorder(&painter);
if (!image.isNull()) { if (!image.isNull()) {
//绘制背景图片 //绘制背景图片
drawImg(&painter, image); drawImg(&painter, image);
//绘制标签
//绘制标签1 drawOSD(&painter, osd1Visible, osd1FontSize, osd1Text, osd1Color, osd1Image, osd1Format, osd1Position);
if (osd1Visible) { drawOSD(&painter, osd2Visible, osd2FontSize, osd2Text, osd2Color, osd2Image, osd2Format, osd2Position);
drawOSD(&painter, osd1FontSize, osd1Text, osd1Color, osd1Image, osd1Format, osd1Position);
}
//绘制标签2
if (osd2Visible) {
drawOSD(&painter, osd2FontSize, osd2Text, osd2Color, osd2Image, osd2Format, osd2Position);
}
} else { } else {
//绘制背景 //绘制背景
drawBg(&painter); drawBg(&painter);
@@ -265,6 +257,10 @@ void VideoWidget::paintEvent(QPaintEvent *)
void VideoWidget::drawBorder(QPainter *painter) void VideoWidget::drawBorder(QPainter *painter)
{ {
if (borderWidth == 0) {
return;
}
painter->save(); painter->save();
QPen pen; QPen pen;
pen.setWidth(borderWidth); pen.setWidth(borderWidth);
@@ -314,6 +310,7 @@ void VideoWidget::drawImg(QPainter *painter, QImage img)
} }
void VideoWidget::drawOSD(QPainter *painter, void VideoWidget::drawOSD(QPainter *painter,
bool osdVisible,
int osdFontSize, int osdFontSize,
const QString &osdText, const QString &osdText,
const QColor &osdColor, const QColor &osdColor,
@@ -321,6 +318,10 @@ void VideoWidget::drawOSD(QPainter *painter,
const VideoWidget::OSDFormat &osdFormat, const VideoWidget::OSDFormat &osdFormat,
const VideoWidget::OSDPosition &osdPosition) const VideoWidget::OSDPosition &osdPosition)
{ {
if (!osdVisible) {
return;
}
painter->save(); painter->save();
//标签位置尽量偏移多一点避免遮挡 //标签位置尽量偏移多一点避免遮挡

View File

@@ -103,6 +103,7 @@ protected:
void drawBg(QPainter *painter); void drawBg(QPainter *painter);
void drawImg(QPainter *painter, QImage img); void drawImg(QPainter *painter, QImage img);
void drawOSD(QPainter *painter, void drawOSD(QPainter *painter,
bool osdVisible,
int osdFontSize, int osdFontSize,
const QString &osdText, const QString &osdText,
const QColor &osdColor, const QColor &osdColor,