问题
I have tried calling self.setStyleSheet("background: transparent; border: transparent;")
on a QGraphicsView, but it still leaves a 1 pixel border on the top edge. I have also tried replacing border: transparent;
with border-style: none;
, but it didn't work either.
Here is a screenshot of the problem:
What command will fully remove the border from the QGraphicsView?
回答1:
You can use one of the following css rule:
graphicsView.setStyleSheet("border-width: 0px; border-style: solid")
or
graphicsView.setStyleSheet("border: 0px")
Your border should disappear.
import sys
from PyQt4.QtGui import *
class Ui(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
graphicsView = QGraphicsView()
graphicsView.setStyleSheet("border: 0px")
grid = QGridLayout()
grid.addWidget(graphicsView)
self.setLayout(grid)
app = QApplication(sys.argv)
ui = Ui()
ui.show()
sys.exit(app.exec_())
Here is the widget with the default style:
And now the widget with the style applied:
回答2:
If the QGraphicsView
is the top level window, try:
self.setContentsMargins(QMargins())
If not, you call the same function on every layouts and widgets (the function is defined in both classes) between the QGraphicsView
and the top level window.
PS: QMargins()
is part of QtCore, and when its constructor is called without any parameters, the four margins are set to 0.
来源:https://stackoverflow.com/questions/7325911/unable-to-fully-remove-border-of-pyqt-qgraphicsview