我有这个问题好几个月了。我尝试使用Qml的QtWebView在iOS上实现webview,并通过QWidget::createWindowContainer
将webview嵌入到一个小部件中(遵循在线教程)。但我只是不能让这个小部件填充父小部件,也不能改变它的大小。
我已经写了以下最小的例子来解释这个问题:
的main.cpp
#include <QApplication>
#include <QQuickView>
#include <QBoxLayout>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *mainwindow = new QWidget();
mainwindow->setStyleSheet("background-color:red;"); // so that we can see the problem more clearly
QHBoxLayout *layout = new QHBoxLayout(mainwindow);
QQuickView *view = new QQuickView();
QWidget* container = QWidget::createWindowContainer(view, mainwindow);
// container->setMinimumSize(200, 200);
// container->setMaximumSize(200, 200); // the displaying size doesn't change with or without these lines
// container->setFocusPolicy(Qt::TabFocus);
view->setSource(QUrl("qrc:///webview.qml"));
layout->addWidget(container);
mainwindow->setLayout(layout);
mainwindow->show();
return a.exec();
}
webview.qml
import QtQuick 2.2
import QtWebView 1.0
Item {
visible: true
anchors.fill: parent
WebView {
anchors.fill: parent
url: "https://www.google.de"
}
}
当我在QtCreator上的iphonesimulator上运行这个迷你程序时,布局就像下面的截图(对不起,我还不能嵌入图片): We can see the container doesn't fill the top area。即使父窗口小部件小得多(在我的实际程序中),容器也总是具有相同的大小。当我旋转iphonesimulator时,it looks then like this!。
有人可以帮忙解决这个问题吗?几个月来,它让我烦恼。谢谢!