qt中如何实现界面最小化时呈现收缩形式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中如何实现界面最小化时呈现收缩形式相关的知识,希望对你有一定的参考价值。

直接点击按“windows”+“M”即可做到多窗口最小化的目的。
如下图:

另外Windows 7任务栏最右处的显示桌面按键可以让多窗口最小化,但是当点开一个正在运行的窗口或新建一个对话窗口时,原显示的窗口都会恢复显示。

如果是任务栏标签最小化,则直接右击任务栏空白处,选择属性→点击任务栏按钮→选择从不合并,即可解决。
参考技术A QT最小化窗口,我知道的就是设置窗口在显示:w.setWindowFlags(Qt::WindowMinimizeButtonHint);设置图标
触发设置状态:w.setWindowState(Qt::WindowMinimized);//设置显示最小化
如果是实现收缩的慢速最小化,说实话我没有找到过这样的属性,不知道楼主找到了没有,可否共享一下呢,最近我也需要实现这种效果。

如何在屏幕外窗口中呈现焦点指示器?

【中文标题】如何在屏幕外窗口中呈现焦点指示器?【英文标题】:How to render focus indicators in an offscreen window? 【发布时间】:2018-03-20 10:43:32 【问题描述】:

我正在尝试使用 Qt 在虚拟现实中实现自定义用户界面。 我正在使用 QQuickRenderControl 将 QML 中定义的一些 UI 渲染到 OpenGL 帧缓冲区中。 在我的自定义 OpenGL 场景中,生成的纹理被绘制到一个四边形上。使用运动控制器模拟鼠标事件。

这一切都很好,但我无法以“活动”或“集中”样式呈现 UI。例如,如果我激活一个文本字段,则没有光标和蓝色轮廓,因为屏幕外窗口(QQuickWindow)不被视为活动窗口。它从未真正显示在桌面上 - 它只存在于内存中。

如果我强制窗口显示在桌面上并将其设置为应用程序的前窗口,则活动文本字段将正确呈现 VR 场景中的焦点轮廓和光标。但是,我想避免在桌面上显示这个窗口(它呈现为一个空白窗口)。

有没有办法强制 QQuickWindow 像前窗一样呈现,即使不是这样?

【问题讨论】:

您找到解决方案了吗? 很遗憾没有。从那以后我切换到了虚幻引擎。 【参考方案1】:
m_quickWindow->setX(-m_quickWindow->width());
m_quickWindow->setY(-m_quickWindow->height());
m_quickWindow->setFlag(Qt::SplashScreen);
m_quickWindow->show();

Qt 5.11 没问题

m_quickWindow->setOpacity(0.f);
m_quickWindow->setFlags(Qt::SplashScreen | Qt::WindowTransparentForInput);
m_quickWindow->show();

更好的解决方案 - 适用于 Qt 5.15

但看起来不太好。

【讨论】:

如果你想将事件从测试窗口发送到m_quickWindow,那么不要忘记在测试窗口设置标志Qt::WindowDoesNotAcceptFocus以避免失去m_quickWindow的焦点。

以上是关于qt中如何实现界面最小化时呈现收缩形式的主要内容,如果未能解决你的问题,请参考以下文章

QT中如何实现界面之间传递数据??

Qt之界面实现技巧

qt creator菜单栏实现clean实现清除界面上3个文本框中的内容,该如何实现,求教

QT如何实现QStackedWidget界面间的切换

点击MFC界面按钮,就可以调出来一个已经编译好的Qt界面。如何实现?

如何在屏幕外窗口中呈现焦点指示器?