Qtが新しく、いくつか問題があります。QGraphicsSceneでビデオの上に線を描く
私はボタンをクリックすると、オーバーレイのようなビデオに単純な線を描こうとしています。 私のビデオはカメラからのもので、QGraphicsScene(またはQframe)に表示されます。これはライブビデオです。
paintEventを修正しようとしましたが、新しいフレームが来るとラインが現れて消えます。
また、いくつかの属性(WA_NoBackGroundとWA_PaintOnScreen)を使用してオーバーレイクラスを作成しようとしましたが、今回はビデオにラインが表示されますが、ビデオは停止します。ここ
は(Draw Rectangular overlay on QWidget at clickに触発)オーバーレイのための私のコードである:
Overlay.h
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPointer>
class Overlay : public QWidget
{
public:
Overlay(QWidget * parent = 0) ;
protected:
void paintEvent(QPaintEvent *e);
};
Overlay.cpp
#include "overlay.h"
Overlay::Overlay(QWidget *parent): QWidget (parent)
{
//setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_NoBackground);
setAttribute(Qt::WA_PaintOnScreen);
}
void Overlay::paintEvent(QPaintEvent *e)
{
QPainter p(this);
p.drawLine(0,0,100,100);
}
clickDrawボタンスロット:
私はQtの4.8.6EDIT 私は親としてQGraphicsViewオブジェクトと、透明のQWidget(setOpacity)を作成しようとしましたが、それはうまくいきませんでしたと組込みLinux、上のよ
QPointer<Overlay> m_overlay;
w= static_cast<QWidget*>(ui->r_frame);
if (!m_overlay)
m_overlay = new Overlay(w->parentWidget());
m_overlay->setGeometry(w->geometry());
m_overlay->show();
update();
、ウィジェットが白く表示されます。私はX11のコンポジションマネージャーが必要だと思います(それは私が様々なウェブサイトから読んだものです)。これが機能するためにあなたの助けを
おかげで、 挨拶
'QGraphicsScene'を使用している場合は、[drawForeground](http://doc.qt.io/qt-5/qgraphicsscene.html#drawForeground)をオーバーライドする方がよいでしょう。 – TheDarkKnight
ビデオアイテムの上に別のグラフィックアイテムを追加するだけで、それを使ってラインを描画するのはどうですか? – dtech
@TheDarkKnight私はこれを試しました。ラインが現れ、ビデオの下で即座に消えます。 – PierreOlivier