QWidget не отвечает после нажатия кнопки мыши.

Я пытаюсь заставить событие нажатия мыши работать с моим созданным виджетом, но каждый раз, когда я щелкаю виджет, окно перестает отвечать, и мне приходится убивать программу. Кто-нибудь знает, как это исправить, а также как заставить цвет менять?

Вот файлы .h и .cpp.

.файл cpp:

#include "iconwidget.h"#include <QPaintEvent>
#include <QPainter>
#include <QPainterPath>

iconWidget::iconWidget(QWidget *parent) :
QWidget(parent)
{
this->resize(ICON_WIDGET_WIDTH,ICON_WIDGET_HEIGHT);
pressed = false;
}

void iconWidget::paintEvent(QPaintEvent *event)
{
QRect areatopaint = event->rect();
QPainter painter(this);
QBrush brush(Qt::black);
QPointF center = this->rect().center();
QPainterPath icon;
icon.addEllipse(center,20,20);
painter.drawPath(icon);
painter.fillPath(icon, brush);

if (pressed) {
brush.setColor(Qt::red);
}
}

void iconWidget::mousePressEvent(QMouseEvent *event)
{
pressed = true;
update();
iconWidget::mousePressEvent(event);
}

.h файл:

#define ICONWIDGET_H

#include <QWidget>

#define ICON_WIDGET_WIDTH 45
#define ICON_WIDGET_HEIGHT 45

class iconWidget : public QWidget
{
Q_OBJECT

public:
explicit iconWidget(QWidget *parent = 0);
void paintEvent(QPaintEvent *event);
bool pressed;

protected:
void mousePressEvent(QMouseEvent *event);
};

#endif // ICONWIDGET_H

3

Решение

Ты звонишь mousePressEvent() в бесконечной рекурсии. Вы должны изменить строку:

iconWidget::mousePressEvent(event);

в вашем mousePressEvent функция для:

QWidget::mousePressEvent(event);
9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]