开发者

Unable to fully remove border of PyQt QGraphicsView

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 pro开发者_StackOverflowblem:

Unable to fully remove border of PyQt QGraphicsView

What command will fully remove the border from the QGraphicsView?


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:

Unable to fully remove border of PyQt QGraphicsView

And now the widget with the style applied:

Unable to fully remove border of PyQt QGraphicsView


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜