Первое: вторая часть предложения больше не верна для Qt> = 4.1, где родитель может рисовать позади своих потомков.
В графике отсечение описывает ограничение картины в данной области.Например, если вы нарисовали линию от (0,0)
до (100,100)
с отсеченным прямоугольником (50x50)@(0,0)
, вы фактически нарисуете линию только от (0,0)
до (50,50)
, т.е.все пиксели, которые были бы нарисованы, но лежали вне области отсечения, были отброшены.
В Qt рисование может опционально обрезаться , используя QPainter
методы,но картина всегда неявно ограничена QPaintDevice
, над которым вы работаете.QWidget
- это QPaintDevice
, поэтому рисование вне его QWidget::rect()
не будет иметь никакого эффекта (= оно будет обрезано до rect()
).
Теперь о второй части предложения: В более старых версиях Qt дочерние виджеты сначала заполняли свою область цветом / изображением фона, таким образом эффективно вырезая рисунок родителя за пределами объединения всех геометрий детей.Начиная с Qt 4.1, это поведение можно отключить, установив для свойства QWidget::autoFillBackground
значение false
.В самом деле, это тоже новое значение по умолчанию.
В случае autoFillBackground == false
дочерние виджеты больше не стирают рисунок родителя, выступающий в качестве их фона, за исключением случаев, когда они фактически рисуют.Возьмите QLabel
в качестве примера: с autoFillBackground == false
он просто закрашивает свой текст, оставляя рисунок родителя, чтобы просвечивать как фон метки.