QML无框窗户支撑Aero快照
QML frameless window supporting aero snap
我已经使用无框窗口制作了QML应用程序,并实现了诸如我自己拖动和调整大小之类的操作。但是,通过这种方式,应用程序不支持本机窗口管理器功能,例如Windows Aero Snap或GNOME Window Manager功能。因此,我搜索并找到了这一点,有人找到了一种使用Win32 API在无框窗口中支持它们的方法。但是,有没有一种方法可以将其与QML应用程序或其他使用本机窗口管理器功能的方法?
使用?我使用此代码从C 初始化窗口:
QQmlApplicationEngine engine(QUrl("qrc:/qml/main.qml"));
QObject *topLevel = engine.rootObjects().value(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
window->setFlags(window->flags() | Qt::FramelessWindowHint);
if ( !window ) {
qWarning("Error: Your root item has to be a Window.");
return -1;
}
window->show();
编辑:我还想使用本机窗口管理器落下阴影,例如我链接到的示例。
编辑:我有第二个问题:按照@kuba的说明,我得到了它的目的。但是现在我有一个问题,当我调整大小或移动时,QT留下了一个毫无疑问的区域。
winapi窗口句柄由 window->winId()
提供:
HWND handle = window->winId();
您可以将此手柄传递给本机功能。
要过滤WM_NCCALCSIZE
消息,您需要通过子类QAbstractNativeEventFilter
来实现本机事件处理程序,并通过调用qApp->installNativeEventFilter(myFilter)
。
相关文章:
- 如何在不显示媒体播放器的情况下在libVLC中拍摄快照
- 无法访问卷影复制服务快照卷
- SDL2-从Surface(屏幕快照)创建纹理的问题
- QML无框窗户支撑Aero快照
- 卷快照服务 - 忽略 FilesNotToSnapshot
- 拍摄进程快照在 32 位和 64 位操作系统中是否有效?
- Aero Snap的无边界窗口在最大化状态下过大
- 如何对从 Android DDMS 导出的快照本机堆进行后处理
- Clang - Windows 快照构建和版本 3.7.1 之间的区别
- 如何拍摄可靠的QGLWidget快照
- DwmEnableComposition not enabling Aero
- 如何在启用Windows Aero主题时在标题栏上绘制位图图标
- "关闭工具帮助32快照":找不到标识符
- 节点加载项无法快照(CreateToolhelp32Snapshot)模块
- 进程快照无法与宽字符串进行比较
- 转储核心时拍摄堆快照的时间
- 使用Win RT从相机捕获快照
- 从IP摄像机的rtsp视频流中获取快照
- 使用CreateToolhelp32Snapshot()对正在运行的进程进行快照时,权限被拒绝
- 如何正确恢复窗口7/vista aero快照调整大小的窗口小部件