开发者

How to detect when a QWebEngineView widget is opened/closed?

I'm adding the discord widget from widgetbot to a grid layout in a way it can expand above other widgets, the problem is, even when the widget is 'closed' the QWebEngineView widget occupies the entire area blocking things below it to be clicked:

How to detect when a QWebEngineView widget is opened/closed?

I thought of setting a maximum size to the widget when it is opened and another when it's closed so it doesn't overlay other widgets when it's not 'opened'.

I tried installing an event filter but it didn't throw any event when the widget is opened/closed, would like to ask what other way I could detect it?


#include "discordwidget.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    auto wdgt = new DiscordWidget(this);
}

//discordwidget.h
#include <QtWebEngineWidgets>

class DiscordWidget : public QWebEngineView 
{
    Q_OBJECT

public:

    DiscordWidget(QWidget* parent = 0) : QWebEngineView(parent)
    {    
        this->page()->setBackgroundColor(Qt::transparent);   
        
        // Tutorial: https://docs.widgetbot.io/embed/crate/tutorial/#getting-started
        this->page()->setHtml(R"(    
            <script src='https://cdn.jsdelivr.net/npm/@widgetbot/crate@3' async defer>
            new Crate({
                server: '', // Replace with your discord server
                channel: '' // ... channel
            })
            </script>    
        )");

        this->installEventFilter(this);
        this->page()->installEventFilter(this);    
    } 

    bool eventFilter(QObject *obj, QEvent *e)
    {
        qDebug() << e->type();

        if( e->type() == QEvent::ChildAdded )
        {
            QChildEvent *ce = static_cast<QChildEvent*>(e);
            ce->child()开发者_Go百科->installEventFilter(this);
        }
        return false;
    }    
};
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜