Невозможно полностью удалить границу PyQt QGraphicsView - PullRequest
4 голосов
/ 07 сентября 2011

Я пытался вызвать self.setStyleSheet("background: transparent; border: transparent;") в QGraphicsView, но он все еще оставляет границу в 1 пиксель на верхнем краю.Я также пытался заменить border: transparent; на border-style: none;, но это тоже не сработало.

Вот скриншот проблемы:

Problematic line

Какая команда полностью удалит границу из QGraphicsView?

Ответы [ 2 ]

7 голосов
/ 07 сентября 2011

Вы можете использовать одно из следующих правил 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_())

Вот виджет со стилем по умолчанию:

enter image description here

А теперь виджет с примененным стилем:

enter image description here

0 голосов
/ 07 сентября 2011

Если QGraphicsView - окно верхнего уровня, попробуйте:

self.setContentsMargins(QMargins())

Если нет, вы вызываете одну и ту же функцию на всех макетах и ​​виджетах (функция определена в обоих классах) между QGraphicsView и окном верхнего уровня.

PS: QMargins() является частью QtCore, и когда его конструктор вызывается без каких-либо параметров, четыре поля устанавливаются на 0.

...