L'arrière-plan de vue est fondamentalement juste pour le "remplissage"; le motif en croix est très basique et non configurable (autre que la couleur, car c'est la propriété de remplissage de base). Mais il est difficile de ne pas dessiner votre propre grille, puis vous avez beaucoup plus de contrôle (telles que l'épaisseur, pointillés/en pointillés, l'origine montrant, etc.):
- créer un stylo pour les lignes de la grille: lui donner la couleur et la largeur
- Vous pouvez définir le stylo pour avoir une largeur "cosmétique" constante; dans ce cas, il ne sera pas l'échelle
- ajouter des lignes à la scène
- les lignes de jeu pour avoir la plus faible valeur de z ils sont attirés avant tout le reste
Exemple:
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QPen
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView
scale_fac = 1
def scale():
global scale_fac
scale_fac = scale_fac * 1.5
view.scale(scale_fac, scale_fac)
app = QApplication([])
scene = QGraphicsScene()
pen = QPen(Qt.red)
pen.setCosmetic(True) # ***
for x in range(0, 500, 50):
line = scene.addLine(x, 0, x, 500, pen)
line.setZValue(-10)
for y in range(0, 500, 50):
scene.addLine(0, y, 500, y, pen)
line.setZValue(-10)
view = QGraphicsView()
view.setScene(scene)
view.show()
QTimer.singleShot(1000, scale)
QTimer.singleShot(2000, scale)
QTimer.singleShot(3000, scale)
app.exec()
Si setCosmetic(True)
n'est pas émise, l'épaisseur de la ligne augmentera à mesure que vous zoomez.
La bonne chose avec ce qui précède est que les lignes sont à une coordonnée fixe dans la scène. Cependant, si vous effectuez un zoom arrière, vous devrez peut-être ajouter plus de lignes ou allonger les lignes existantes. Vous pouvez le faire en remplaçant le drawBackground()
de la scène, qui est appelé avec le rect de la scène qui est en vue: là, vous ajustez les extrémités de la ligne.