Как убрать границу QDialog, которой я даю прозрачное фоновое изображение?

Я собирался сделать прямоугольник QDialog, поэтому я рисую изображение в формате png путем переопределения QDialog::paintEvent.Все хорошо, за исключением того, что в диалоговом окне показана серая граница.

введите описание изображения здесь

Я уверен, что границы не принадлежат к изображению, и я имел setWindowFlags(Qt::FramelessWindowHint) а также setAttribute(Qt::WA_TranslucentBackground, true)Я пытался установить QSS, как border-width: 0px но не сработало.
Есть ли способ убрать границу? И почему это показано?

1

Решение

Вы можете создать диалог без полей, установив Qt::FramelessWindowHint флаг окна:

setWindowFlags(Qt::Window | Qt::FramelessWindowHint);

Чтобы сделать его прозрачным, вы должны установить следующие атрибуты:

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

Другие решения