无法完全删除PyQt QGraphicsView的边框

时间:2011-09-06 20:42:30

标签: python css qt pyqt qgraphicsview

我尝试在QGraphicsView上调用self.setStyleSheet("background: transparent; border: transparent;"),但它仍然在顶部边缘留下1像素边框。我也尝试用border: transparent;替换border-style: none;,但它也没有用。

以下是问题的屏幕截图:

Problematic line

什么命令将完全删除QGraphicsView的边框?

2 个答案:

答案 0 :(得分:6)

您可以使用以下css规则之一:

graphicsView.setStyleSheet("border-width: 0px; border-style: solid")

graphicsView.setStyleSheet("border: 0px")

你的边界应该消失。

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_())

以下是具有默认样式的小部件:

http://i.stack.imgur.com/gpwaW.png

现在应用了样式的小部件:

http://i.stack.imgur.com/A8K4u.png

答案 1 :(得分:0)

如果QGraphicsView是顶级窗口,请尝试:

self.setContentsMargins(QMargins())

如果没有,则在QGraphicsView和顶级窗口之间的每个布局和窗口小部件(在两个类中定义该函数)上调用相同的函数。

PS:QMargins()是QtCore的一部分,当调用其构造函数而没有任何参数时,四个边距设置为0.