QWebEnginePage不知道其内容大小

时间:2018-02-06 07:24:20

标签: c++ qt qt5 qwebengineview qwebenginepage

我有一个使用WebEngineView的非常简单的应用程序,我只想将显示的小部件大小调整为html文件的内容。我希望它的宽度为30像素。相反,我的程序打印QSize(0,0),甚至更糟的是小部件根本不显示。

我在这里做错了什么?

#include <QWebEngineView>
#include <QApplication>
#include <QDebug>
#include <QWebEnginePage>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    auto view = new QWebEngineView;
    QString html = "<html><body><div width=30px>Text</div></body></html>";
    view->setHtml(html);
    auto contentsSize=view->page()->contentsSize().toSize();
    qDebug() << contentsSize;
    view->setFixedSize(contentsSize);
    view->show();
    return app.exec();
}

将我的QWebEngineView放入对话框仍然无效:

#include <QWebEngineView>
#include <QApplication>
#include <QDebug>
#include <QDialog>
#include <QHBoxLayout>
#include <QWebEnginePage>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    auto dialog = new QDialog;
    dialog->setLayout(new QHBoxLayout);
    auto view = new QWebEngineView;
    dialog->layout()->addWidget(view);
    QString html = "<html><body><div width=30px>Text</div></body></html>";
    view->setHtml(html);
    auto contentsSize=view->page()->contentsSize().toSize();
    qDebug() << contentsSize;
    view->setFixedSize(contentsSize);
    dialog->show();
    return app.exec();
}

我也尝试连接信号loadFinished,但没有效果。

#include <QWebEngineView>
#include <QApplication>
#include <QDebug>
#include <QDialog>
#include <QHBoxLayout>
#include <QWebEnginePage>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    auto dialog = new QDialog;
    dialog->setLayout(new QHBoxLayout);
    auto view = new QWebEngineView;
    dialog->layout()->addWidget(view);
    QString html = "<html><body><div width=30px>Text</div></body></html>";
    view->setHtml(html);
    QObject::connect(view->page(), &QWebEnginePage::loadFinished, [&view](bool b) {
        qDebug() << b;
        auto contentsSize = view->page()->contentsSize().toSize();
        qDebug() << contentsSize;
        view->setFixedSize(contentsSize);
    });
    dialog->show();
    return app.exec();

}

0 个答案:

没有答案