【发布时间】:2014-05-10 03:21:15
【问题描述】:
我正在尝试为QDialog 添加圆角。我正在定义自己的 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()有效,但(据我所知)没有办法对掩码进行抗锯齿处理。
看起来是这样的:
【问题讨论】:
-
有截图吗? “为所有内容添加圆角边框”听起来很奇怪。
-
这很奇怪。我添加了一个屏幕截图。在我聚焦该字段之前,第二个字段的边框不会出现。
标签: python qt pyside qdialog paintevent