Я сделал простую текстуру обведенной рамки и у меня есть следующий фрагмент кода, который др aws шаблон шахматной доски:
scene.setSceneRect(0, 0, 1000, 1000);
ui->g_view->setScene(&scene);
QPixmap texture("block.png");
QBrush brush(texture);
int count = 0;
for(int x=0; x<1000; x += 50) {
for(int y=0; y<1000; y += 50) {
if (count % 2 == 0) {
scene.addRect(x, y, 50, 50, Qt::NoPen, brush);
}
count++;
}
// Offset rows by 1
count++;
}
Это прекрасно работает:

Однако, когда я изменяю код так, чтобы прямоугольники отображались «вне сетки»:
scene.addRect(x + 5, y + 5, 50, 50, Qt::NoPen, brush);
Получается следующий вывод:

Я ожидал, что каждый вызов addRect будет каждый раз рисовать текстуру, начиная с верхнего угла.
Однако для некоторых Причина: qt переводит текстуру, используя местоположение, в котором она также рисуется, почти как текстура бесконечно выложена плиткой на заднем плане, а addRect просто вырезает окно.
Как заставить drawRect вести себя так, как я ожидал, т.е. независимо от того, какие значения x и y являются текстурой, она всегда рисуется из верхнего левого угла.
Редактировать: block.png
