Top.Mail.Ru
Уведомления
Очистить все

[Решено] QCustomPlot и функция paintEvent

(@redorm)
New member

В проекте рисую графики с помощью 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, а не в мой. Я понимаю, что можно запихнуть своё рисование в библиотеку, но не хочется пачкать библиотечный файл. Помогите убогому сделать правильно.

Цитата
Создатель темы Размещено : 20.01.2023 10:31
Метки темы
Aveal
(@aveal)
Top level Admin

Можешь проект скинуть с проблемой?

ОтветитьЦитата
Размещено : 20.01.2023 17:22
(@redorm)
New member

@aveal Проблему решил. Нарисовал свой прямоугольник виджетом и меняю его цвет когда надо.

ОтветитьЦитата
Создатель темы Размещено : 25.01.2023 14:20
Aveal
(@aveal)
Top level Admin

@redorm Хорошо.

ОтветитьЦитата
Размещено : 25.01.2023 14:36
Поделиться: