Skip to content

疑问:手动用DPlatformWindowHandle给Qt无边框窗口添加DXCB效果只有有时才能生效 #3147

@RigoLigoRLC

Description

@RigoLigoRLC

我在Deepin 20.2.1环境下,创建一个无边框(Qt::FramelessWindowHint)的QMainWindow window、创建一个DPlatformWindowHandle p(&window, &window),试图通过在DTK“注册”该窗口达到给普通窗口添加DXCB效果(如圆角、边框缩放)。期间遇到几个问题:

如果在window.show()之前创建DPlatformWindowHandle,则无论如何只能呈现无阴影、无法缩放的状态;

如果在window.show()之后创建,则大部分时候,窗口都会呈现无阴影、无法缩放的状态:

image

有的时候,窗口会具有与未注册到DXCB时一样的阴影,但仍无法缩放:

image

极个别时候窗口具有正常的圆角和正常的边框缩放:

image

作为对比,不注册到DXCB时无边框窗口的样式:

image

如果这样做能够生效,那么肯定有正确之处,但是我不知道这些问题发生的原因。如果这样的做法不正确,那么如何做才可以让普通的无边框QMainWindow具有DXCB的效果?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions