[英]Qml / Qt / C++ : QQuickView in a QWidget - Need Background Transparency
[英]Qml/Qt/C++: QQuickView in a Widget, can't get the position right
我正在用QT5.5實現一個簡單的程序,其中包含一個HTML窗口(QWebview),如以下屏幕截圖所示:
現在,我想也為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.