Qt / Qml:如何使widget(createWindowContainer)填充父窗口小部件

时间:2016-02-25 09:26:07

标签: c++ ios qt webview qml

我有这个问题好几个月了。我尝试使用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!

有人可以帮忙解决这个问题吗?几个月来,它让我烦恼。谢谢!

0 个答案:

没有答案