簡體   English   中英

Qml / Qt / C ++:小部件中的QQuickView,位置不正確

[英]Qml/Qt/C++: QQuickView in a Widget, can't get the position right

我正在用QT5.5實現一個簡單的程序,其中包含一個HTML窗口(QWebview),如以下屏幕截圖所示:

右側的HTML窗口

現在,我想也為iOS安裝該程序,例如iPad。 我發現QWebview類不適用於移動系統,因此我不得不將HTML窗口更改為帶有QML文件的QQuickView(或者有更好的方法嗎?)。 我在網上找到了以下代碼:

QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);
container->setMinimumSize(200,400);
container->setMaximumSize(200,400);
container->setFocusPolicy(Qt::TabFocus);
view->setSource(QUrl("qrc:///webview.qml"));
layout->addWidget(container);

然后我將容器添加到mainWindow中。 webview.qml:

import QtQuick 2.5
import QtWebView 1.0
Rectangle {
id: rectangle
width: 200
height: 400
WebView {
    id: webview
    url: "file:///test.html"
    anchors.fill: parent
    width: 200
    height: 400
}
}

但是不知何故我無法獲得正確的布局。 iOS上的HTML窗口容器后面有一個空白/白色矩形,並且該容器也不位於應位於其右側的HTML窗口中。 當我更改qml文件中矩形的寬度和高度時,它僅更改webview的大小,而不更改白色背景。

誰能告訴我,我該怎么做? 我還使用了container->setParent()但視圖始終在左側。

作者代碼的可見性可能還不夠,但是總的來說,以一定的對齊方式將小部件設置為布局更容易。 這樣,您可以命令小部件位於特定的一側,並使放置位置不依賴於坐標/宿主小部件尺寸等。 layout變量假定為水平框布局或QHBoxLayout。

// make sure that QHBoxLayout* layout = new QHBoxLayout(this);
// or set the horizontal layout somehow else
QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);

container->serFixedWidth(200); // the layout is horizontal
                               // and we *may* want to fix the width

container->setFocusPolicy(Qt::TabFocus);
view->setSource(QUrl("qrc:///webview.qml"));
layout->addWidget(container, Qt::AlignRight); // align to the right

請注意,其余水平布局應像相對於其中的相對位置一樣填充。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM