Я пытаюсь добавить закругленные углы к QDialog
. Я определяю свой собственный метод paintEvent
для создания закругленных углов. Он работает, но он добавляет округлые границы ко всему. Даже курсор получает границу. Есть ли способ отключить это поведение?Как остановить paintEvent от рисования детских виджетов?
Пример кода:
from PySide import QtCore, QtGui
class RenameDialog(QtGui.QDialog):
def __init__(self, parent=None, **kwargs):
super(RenameDialog, self).__init__(
parent=parent, f=QtCore.Qt.CustomizeWindowHint)
self.fieldA = QtGui.QLineEdit(self)
self.fieldB = QtGui.QLineEdit(self)
self.setLayout(QtGui.QHBoxLayout())
self.layout().addWidget(self.fieldA)
self.layout().addWidget(self.fieldB)
# Set background transparent. Only items drawn in paintEvent
# will be visible.
palette = QtGui.QPalette()
palette.setColor(QtGui.QPalette.Base, QtCore.Qt.transparent)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
self.setPalette(palette)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
fillColor = QtGui.QColor(75, 75, 75, 255)
lineColor = QtCore.Qt.gray
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(QtGui.QPen(QtGui.QBrush(lineColor), 2.0))
painter.setBrush(QtGui.QBrush(fillColor))
painter.drawRoundedRect(event.rect(), 15, 15)
Я пытаюсь сделать это с paintEvent
потому что:
- QDialog таблицы стилей не может использовать
border-radius
. Кривые границы видны, но углы все еще видны. QDialogs.setMask()
работает, но нет способа (что я знаю), чтобы скрыть маску.
Вот как это выглядит:
У вас есть фотография? «Добавление округленных границ ко всему» звучит странно. –
Странно. Я добавил скриншот. Границы второго поля не отображаются, пока я не сфокусирую это поле. – Jordan