LINUX.ORG.RU

Сообщения RedOrm

 

QCustomPlot и функция paintEvent

Форум — Development

В проекте рисую графики с помощью QCustomPlot. Графики рисуются, я счастлив. Захотелось мне нарисовать отдельный прямоугольник не связанный с QCustomPlot. Раньше делал так: 1) В классе QMainWindow делал переопределение для paintEvent:

protected:
    void paintEvent(QPaintEvent*) override;

2) Потом в mainwindow.cpp делал определение функции paintEvent:

void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter;
QBrush   brush;
QColor   color(0, 0, 255);
 
painter.begin(m_mainWidget);
 
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 2, Qt::SolidLine)); // Обрисовка.
 
color.setRgb(100, 0, 0); // Настройка цвета.
brush.setColor(color);                   // Применение настроек цвета.
 
brush.setStyle(Qt::SolidPattern);        // Настройка стиля заливки.
painter.setBrush(brush);                 // Заливка.
painter.drawRect(QRect(m_mainWidget->width()-100, m_mainWidget->height()-100, 200, 200)); // Прорисовка прямоугольника.
 
painter.end();
}

3) Где надо, например по нажатию кнопки, вызывал функцию repaint() и всё рисовалося.

Но тут не заработало. Отладчик просто не переходит в мой paintEvent. Покопал в QCustomPlot, оказалось в библиотеке тоже используется paintEvent. И когда я вызываю в своей программе repaint(), то происходит переход в paintEvent, который переопределён в QCustomPlot, а не в мой. Я понимаю, что можно запихнуть своё рисование в библиотеку, но не хочется пачкать библиотечный файл. Помогите убогому сделать правильно.

 , , ,

RedOrm
()

RSS подписка на новые темы