void MainWindow::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
painter.setBrush(QBrush(Qt::red,Qt::SolidPattern));
painter.drawRect(10,10,100,100);
}
Имея данный код как узнать цвет пикселя (20,20)?
В интернете нашел такой способ, но он не работает
QPixmap qPix = QPixmap::grabWidget(ui->centralWidget);
QImage image(qPix.toImage());
QColor color(image.pixel(20, 20));
Что-то вроде этого:
QColor QMainWindow::getPixelAt(int x, int y)
{
return grab(QRect(x, y, 1, 1)).toImage().pixelColor(0,0);
}
Но этот код нельзя вызывать непосредственно из MainWindow::paintEvent(QPaintEvent *e), так как использование метода grab приводит к вызову этого самого paintEvent, и возникнет бесконечная рекурсия. Так что получается ерунда. Если вам нужно знать состояние целевого пикселя во время прорисовки, ИМХО лучше иметь промежуточный буфер и работать с ним, а потом уже его конечное состояние рисовать на виджет.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники