【发布时间】:2015-03-27 16:52:17
【问题描述】:
我的类“ComponentArea”如下所示:
#ifndef COMPONENTAREA_H
#define COMPONENTAREA_H
#include <QObject>
#include <QWidget>
#include <QScrollArea>
#include <QtDesigner/QtDesigner>
#include <QMouseEvent>
#include <QPainter>
#include <Components/Sockets/socket.h>
class ComponentArea : public QScrollArea
{
Q_OBJECT
public:
ComponentArea(QWidget* parent = 0);
void connectSockets(Socket* a, Socket* b);
void childBlock_childSocket_mousePressEvent(Socket* sender, QMouseEvent* event);
void childBlock_childSocket_mouseReleaseEvent(Socket* sender, QMouseEvent* event);
private:
Socket* pressedSocket;
void mouseReleaseEvent(QMouseEvent *event);
};
#endif // COMPONENTAREA_H
在构造函数中,我将pressedSocket设置为0:
pressedSocket = 0;
每当我尝试使用pressedSocket 时,在其中一个事件中,我都会收到分段错误:
void ComponentArea::childBlock_childSocket_mousePressEvent(Socket *sender, QMouseEvent *event)
{
if((pressedSocket == 0) && (event->button() == Qt::LeftButton)) //SIGSEGV here
{
pressedSocket = sender;
}
}
我对每个成员都有这种效果,即使是简单的布尔值。 我看不出我做错了什么。有什么建议吗?提前致谢!
【问题讨论】:
-
您的
ComponentArea对象无效。 -
什么时候出现段错误?在分配时,或稍后,当您尝试使用该值时?
-
从哪里调用这个函数?