QWidget 在鼠标按下事件后没有响应
QWidget does not respond after a mouse press event.
我正在尝试让鼠标按下事件与我创建的小部件一起使用,但每次单击小部件时,窗口都会停止响应,我必须杀死该程序。有谁知道如何解决这个问题以及如何改变颜色?
这是 .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
你在无休止的递归中调用mousePressEvent()
。您应该更改该行:
iconWidget::mousePressEvent(event);
在您的mousePressEvent
函数中:
QWidget::mousePressEvent(event);
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 跟踪滚动条上的鼠标事件
- 什么是事件表 (wxWidgets)?
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 给定顺序中的事件处理
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- C++ 信号和插槽不工作:插槽不响应事件
- Qt应用程序不响应鼠标和键盘事件
- 发生鼠标滚动事件时如何响应
- 事件响应比信号量快
- 如何保持Qt小部件响应键盘和鼠标,同时处理Windows事件
- visualstudio2010-如何制作一个正在等待某个事件的c++程序,使其看起来响应迅速
- QWidget 在鼠标按下事件后没有响应
- 为什么我的子窗口对鼠标事件没有响应?