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