如何删除我给出透明背景图像的QDialog的边框?

Kno*_*ing 1 c++ qt qt4 transparent borderless

我打算制作一个非矩形QDialog,所以我通过覆盖绘制一个png图像.QDialog::paintEvent除了在对话框中显示一个灰色边框外,一切都没问题.就像这样:

在此输入图像描述

我确信边框不属于图像,我曾经setWindowFlags(Qt::FramelessWindowHint)setAttribute(Qt::WA_TranslucentBackground, true).我试图设置qss border-width: 0px但是没有用.有没有办法删除边框?为什么显示它?

Nej*_*jat 7

您可以通过设置Qt::FramelessWindowHint窗口标志来创建无边界对话框:

setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)

要使其透明,您应该设置以下属性:

setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_PaintOnScreen);
Run Code Online (Sandbox Code Playgroud)