一.效果
二.实现
通常在使用libVLC或者海康SDK的时候,会把widget的winID当做参数传进去,此时如果直接在该widget上放置按钮等控件,这些控件在视频渲染的时候就会被刷掉,无法显示。
那么只能将这些控制按钮放置widget外,一般是widget下方,这样做虽然中规中矩,但是如果视频窗口本来就很小,还得被控制按钮挤压空间,就不太合适了。
这里有个取巧的做法,将控制按钮放在独立窗口上,然后将该独立窗口的背景设置成透明,这样视觉上就感觉按钮就是在widget上,完美解决了这个问题。
假设视频渲染的窗口为KlMainDialog,控制按钮所在窗口为KlControlPanel
KlMainDialog的实现
#ifndef KLMAINDIALOG_H
#define KLMAINDIALOG_H
#include <QWidget>
#include "KlControlPanel.h"
QT_BEGIN_NAMESPACE
namespace Ui { class KlMainDialog; }
QT_END_NAMESPACE
class KlMainDialog : public QWidget
{
Q_OBJECT
public:
KlMainDialog(QWidget *parent = nullptr);
~KlMainDialog();
protected:
bool event(QEvent *event) override;
void showControlPanel(