QDirectPainter не рисует и не может ничего рисовать. Он предназначен для предоставления доступа к кадровому буферу, т. Е. Через его функцию QDirectPainter :: frameBuffer () . Если у вас есть указатель кадрового буфера, вы сможете напрямую управлять пикселями.
Подход, который может сработать, состоит в том, чтобы закрасить ваш виджет в QImage (внимательно следите за глубиной цвета, порядком байтов, размещением пикселей и т. Д., Чтобы они соответствовали таковым вашего кадрового буфера) через растровый движок. Это легко сделать, открыв QPainter на QImage. После завершения процесса рисования переместите соответствующую часть буфера изображения в кадровый буфер.