QtWebEngine отображает черный блок, когда я вызывал QWidget :: winId ()

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QPushButton>
#include <QWebEngineView>
#include <qDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
#if 1
auto btn  = new QPushButton;
ui->gridLayout->addWidget(btn);
qDebug()<<btn->winId();
#endif
auto web = new QWebEngineView;
ui->gridLayout->addWidget(web);
web->load(QUrl("http://www.google.com"));
}

MainWindow::~MainWindow()
{
delete ui;
}

Вот и весь код.
Windows 10, Qt 5.5.

Когда я включаю переключатель, winId() будет вызван, то QtWebEngine не может работать правильно.

Что я должен делать ?

0

Решение

Не вызывайте winId (), пока виджет не станет видимым. Вы можете установить eventFilter, который активируется в QEvent :: Show, для получения дополнительной информации смотрите http://doc.qt.io/qt-5/qobject.html#installEventFilter

0

Другие решения


По вопросам рекламы [email protected]