Просьба разобратся начал изучать графику ,а именно рисование в pyqt и не понамею некоторых вещеи , Qpainter как понял это класс,инструмент для рисования но как и где он рисует не совсем понятно , вроде как он рисует на виджетах , но как не совсем понятно, чтобы рисовать на виджете как я понял или может не правильно понял ,надо создать класс который наследует от виджета на котором хотим рисовать и переопределить метод paintEvent который есть у виджетов и который рисует виджет и перерисовывает при изменении и масштабировании , и задать в этом методе код рисунка которыи мы хотим рисовать на виджете да? Просто взять и прямо рисовать на виджете нелзя ? не используя его метод paintevent? Нету виджета или специальнои области для рисования на котором можно прямо рисовать с помощю qpainter без метода paint event? ,Например как в ткинтер там есть виджт канвас на котором прямо рисуешь или в язке delphi там тож был компонент image на котором тож прямо рисуешь?
Не помню как в qt, но обычно да, потому что если просто взять и нарисовать один раз, то при следующем обновлении окна оно сотрется. Надо в событии каждый раз рисовать всё, что сейчас нужно (возможно потребуется хранить какое-то состояние, в зависимости от задачи, например, массив добавленных пользователем точек).
QImage?
Возможно точно не припомню
А почему Qt, почему ты не рисуешь в HTML5 на Canvas?
И чего вообще в итоге ты хочешь добиться?
Я про Qt.
На QImage вроде можно без события рисовать, но не уверен. Скорее всего просто создав QPainter для него.
QPicture еще есть.
https://doc.qt.io/qt-6/qpaintdevice.html
Inherited By: QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator, and QWidget
Т.е. QPainter может рисовать на всём этом (теоретически).
Прочитав документацию на QImage и на QPicture я увидел, что первый хранит точки, а второй класс хранит графические команды. То есть, рисовать на QImage это нормально (было в древности).
Ещё многообещающе выглядит QPixmap (именно в него преобразовывают QImage перед отображением на QLabel):
The QPixmap class is an off-screen image representation that can be used as a paint device.
Является ли QImage виджетом, и как его после рисования отобразить? Ищем на stackoverflow:
вот здесь пишут, что лучше использовать QGraphicsView
, о чём я уже́ писал ранее.
Вот статья на тему того, как сделать свой виджет, который будет отображать заранее нарисованную картинку:
https://pro-prof.com/forums/topic/qt_scaledpixmap
(чтобы после использовать этот widget вместо QLabel).
#include <QWidget>
class QScaledPixmap : public QWidget {
public:
QScaledPixmap(QWidget *parent = 0);
void setScaledPixmap(const QPixmap &pixmap);
protected:
void paintEvent(QPaintEvent *event);
private:
QPixmap m_pixmap;
};
Я просто изучаю паитон ,я сщяс не делаю каких то проектов. После некоторых основ решил изучить графику,рисование в python ,смотрел рисование в тк интер вроде все там понятнее и проще , но я хотел изучить рисование в pyqt он боле серезный и продвинутая библиотке создание интерфеиса,
И ищучая рисование в этои библиотеке там везде описывался класс qpainer которое рисет на виджетах я не совсем понял прицпы рисование с помощю этого инструмента и хочу разобратся понять а дале видео будет.
И изучая эту тему столкнулся с graphics view, и Graphicsscene, Qpixmap , QGraphicsItem но тож не не совсем понял ,эти классы поврхность для рисование из pyqt в котором можно рисовать отображать? И есле да то Qpainter может рисовать на них?
А про HTML5 и canvas не слышал но тоже посмотрю. А HTML5 и канвас тоже часть pyqt?
HTML5 и канвас тоже часть pyqt?
Нет, это отдельная технология. Их можно совместить, но можно и использовать обе сами-по-себе.