【问题标题】:QtWebEngine display black block when I called QWidget::winId()当我调用 QWidget::winId() 时,QtWebEngine 显示黑色块
【发布时间】:2015-09-09 08:29:31
【问题描述】:
#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;
}

这就是全部代码。 视窗 10,Qt 5.5。

当我打开开关时,会调用winId(),然后QtWebEngine就不能正常工作了。

我该怎么办?

【问题讨论】:

  • 您的gridlayout 是如何配置的?是QGridLayout吗?
  • 是的。 centralWidget 包含 gridLayout

标签: c++ qt qtwebengine


【解决方案1】:

在小部件可见之前不要调用 winId()。您可以设置一个在 QEvent::Show 上激活的 eventFilter,有关详细信息,请参阅http://doc.qt.io/qt-5/qobject.html#installEventFilter

【讨论】:

    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 2017-08-30
    • 2015-05-23
    • 2014-05-20
    • 2023-04-08
    • 2014-10-03
    • 2015-08-27
    • 2014-12-25
    相关资源
    最近更新 更多