C++ 如何删除我提供的透明背景图像的QDialog的边框?

C++ 如何删除我提供的透明背景图像的QDialog的边框?,c++,qt,qt4,transparent,borderless,C++,Qt,Qt4,Transparent,Borderless,我打算制作一个非矩形QDialog,因此我通过覆盖QDialog::paintEvent绘制了一个png图像。除了对话框周围显示灰色边框外,一切正常。如下所示: 我确信边框不属于图像,我有setWindowFlags(Qt::FramelessWindowHint)和setAttribute(Qt::WA_半透明背景,true)。我试图设置类似边框宽度:0px的qss,但没有起作用。 有没有办法删除边框?为什么会显示它?您可以通过设置Qt::FramelessWindowHint窗口标志来创建

我打算制作一个非矩形
QDialog
,因此我通过覆盖
QDialog::paintEvent
绘制了一个png图像。除了对话框周围显示灰色边框外,一切正常。如下所示:

我确信边框不属于图像,我有
setWindowFlags(Qt::FramelessWindowHint)
setAttribute(Qt::WA_半透明背景,true)
。我试图设置类似
边框宽度:0px的qss,但没有起作用。

有没有办法删除边框?为什么会显示它?

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

setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
要使其透明,应设置以下属性:

setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_PaintOnScreen);

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

setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
要使其透明,应设置以下属性:

setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_PaintOnScreen);

谢谢。我会在几个小时后试一试。谢谢。我会在几个小时后试一试。