ios - QT如何更改应用程序窗口z索引
<p><p>我试图将原生 <code>iOS</code> 播放器作为自定义 <code>QML</code> 组件并设法做到了,这要归功于 <a href="https://github.com/seyedmmousavi/Native-UITextView-on-Qt-KDAB" rel="noreferrer noopener nofollow">this</a> .但是我遇到了组件的 z 顺序问题。</p>
<p>组件构造函数:</p>
<pre><code>MyVideoView::MyVideoView(QQuickItem *parent /*= 0*/)
: QQuickItem(parent)
, m_view(0)
{
connect(this, SIGNAL(windowChanged(QQuickWindow*)), this, SLOT(onWindowChanged(QQuickWindow*)));
connect(this, SIGNAL(visibleChanged()), this, SLOT(onVisibleChanged()));
}
</code></pre>
<p>onWindowChanged 实现:</p>
<pre><code>void MyVideoView::onWindowChanged(QQuickWindow* window)
{
if(!m_view) {
}
if (window != 0) {
UIView *parentView = reinterpret_cast<UIView *>(window->winId());
AVPlayer *_player;
AVURLAsset *_asset;
AVPlayerItem *_playerItem;
AVPlayerLayer *m_playerLayer;
_player = [ init];
NSURL *baseURL = [ initWithString: @"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
_asset = ;
_playerItem = ;
;
m_playerLayer = ;
m_playerLayer.frame = CGRectMake(this->x(), this->y(), this->width(), this->height());
;
;
} else {
;
}
}
</code></pre>
<p>尽管如此,我可以在我的应用程序中使用 <code>ApplicationWindow</code> 组件,但问题是,该组件始终位于顶部,即使我设置了也覆盖了整个应用程序:</p>
<pre><code>MyVideoView {
z:-3
width: 300
height: 200
x:20
y:300
}
</code></pre>
<p>或者把另一个组件的 z 放到例如<code>300</code>。
我认为这是因为 <a href="http://doc.qt.io/qt-5/qquickwindow.html" rel="noreferrer noopener nofollow">QQuickWindow</a>或由 <code>UIView</code> 引起。
编辑: <code>MyVideoView</code> 放置在 <code>Item</code> 组件内</p>
<p>我想要实现的是:</p>
<ul>
<li>可以设置组件的 z 顺序</li>
<li>或获取应用程序“背后”的组件(在我的应用程序上创建透明部分以便视频可见,这不是最好的解决方案,但我已经没有选项了)</li>
</ul>
<p>有没有办法实现其中之一,或者如果组件是 <code>QQuickItem</code> 之外的其他东西,是否可以完成,因为我真正需要的唯一部分是播放器层,因为我'会创建自定义播放控制界面吗? </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><code>QQuickWindow</code> 是一个 <code>UIView</code>。单个 QML 项目不是,因此您不能将另一个 <code>UIView</code>(或其层)放置在 QML 应用程序“内部”,除非您将应用程序构造为顶级 <code>QQuickWindow</code>带有额外的子 <code>QQuickWindow</code>,然后将视频层夹在那些 Qt Quick 窗口(<code>QWindows</code>)之间。</p></p>
<p style="font-size: 20px;">关于ios - QT如何更改应用程序窗口z索引,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/54287152/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/54287152/
</a>
</p>
页:
[1]