Почему окно просмотра QGraphicsView не обрезает сцену в этом простом примере?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему окно просмотра QGraphicsView не обрезает сцену в этом простом примере?

Сообщение Anonymous »

Это простое приложение создает окно размером 800x600, а затем размещает область просмотра размером 100x100 с координатой 0,0
Если я нарисую в сцене два прямоугольника с размером 100,100 (размером 100, 100) и 300, 300 (размером 200x200), я ожидаю, что они оба будут обрезаны портом просмотра.
Вместо этого я вижу все окно с обоими визуализированными прямоугольниками.
Происходит ли автоматическая подгонка представления, о которой я не знаю?
from PyQt6.QtWidgets import QApplication, QMainWindow, QGraphicsView, QGraphicsScene, QGraphicsRectItem, QVBoxLayout, QWidget
from PyQt6.QtCore import Qt, QRectF
import sys

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):
self.setWindowTitle('QGraphicsView Clipping Example')
self.setGeometry(100, 100, 800, 600)

# Create a central widget and set a layout
central_widget = QWidget()
layout = QVBoxLayout(central_widget)
self.setCentralWidget(central_widget)

# Create a QGraphicsScene
self.scene = QGraphicsScene()
self.scene.setSceneRect(0, 0, 800, 600)

# Create a QGraphicsView with a smaller viewport
self.view = QGraphicsView(self.scene)
self.view.setGeometry(0, 0, 100, 100) # Smaller viewport
self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
self.view.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)

layout.addWidget(self.view)

def add_object(self, item):
self.scene.addItem(item)

if __name__ == "__main__":
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()

# Add a rectangle item to the scene
new_item = QGraphicsRectItem(300, 300, 200, 200)
mainWin.add_object(new_item)
new_item = QGraphicsRectItem(100, 100, 100, 100)
mainWin.add_object(new_item)

sys.exit(app.exec())


Подробнее здесь: https://stackoverflow.com/questions/791 ... le-example
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»