Рисование на виджете вне функции paintEvent ()

130
12 января 2021, 20:20

Возможно ли рисовать на виджете при помощи QPainter вне функции paintEvent ()? В документации написано, что из всех стандартных бэкэндов, QWidget единственный, на котором можно рисовать только внутри paintEvent().

Но так же там сказано, что можно создать собственный бэкэнд, унаследовавшись от QPaintDevice и переопределив paintEngine().Непонятно как реализовывать paintEngine().

class Test :public QPaintDevice, public QWidget  {
public:
    //Метод от QPaintDevice, который требуется переопределить:
    QPaintEngine* paintEngine() const {
        //Что должно быть здесь?
    }
};
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Test test;
   QPainter painter(&test);
   painter.drawLine(100, 100, 200, 200);
   test.show();
   return a.exec();
}

В результате выполнения этого кода, нужно что-бы на виджете test рисовалась линия из (100,100) в (200,200)

READ ALSO
Как отладить редкий access violation c++

Как отладить редкий access violation c++

Приложение установлено у множества клиентов заказчикаВылетает редко, не у всех и не сразу после запуска

237
Ошибка в коде С++ Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted

Ошибка в коде С++ Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted

Очевидная проблема - проверки на выход за пределы массивов происходит до инкремента индекса элемента массива, а не после:

127
Почему не работает implicit conversion

Почему не работает implicit conversion

почему код с template<class T> компилируется, а без него нет

122
Указать ID в JQuery

Указать ID в JQuery

Есть счётчик и JS-код, в строке 71 decimals: 0 будет заменяться на 1 или 2Где и как указать ID (например, #%id%), чтобы при нескольких счётчиках на странице,...

113