void description(QString &);要在.cpp中定义吗?
///////////////////
#include <qwidget.h>
#include <qevent.h>
#include <qstring.h>
class MouseSensor: public QWidget
{
    Q_OBJECT
public:
    MouseSensor(QWidget *parent=0,const char *name=0);
private:
    void emitDescription(const QString &,QMouseEvent *);
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);
    virtual void mouseDoubleClickEvent(QMouseEvent *event);
    virtual void mouseMoveEvent(QMouseEvent *event);
signals:
    void description(QString &);
};
#endif
/* mousesensor.cpp */
#include <qstring.h>
#include "mousesensor.h"
MouseSensor::MouseSensor(QWidget *parent)
    : QWidget(parent)
{
    setMinimumSize(300,300);
}
void MouseSensor::mousePressEvent(QMouseEvent *event)
{
    emitDescription(QString("Press: "),event);
}
void MouseSensor::mouseReleaseEvent(QMouseEvent *event)
{
    emitDescription(QString("Release: "),event);
}
void MouseSensor::mouseDoubleClickEvent(QMouseEvent *event)
{
    emitDescription(QString("DoubleClick: "),event);
}
void MouseSensor::mouseMoveEvent(QMouseEvent *event)
{
    emitDescription(QString("Move: "),event);
}
void MouseSensor::emitDescription(const QString &typeStr,
        QMouseEvent *event)
{
    QString btnStr(typeStr);
    ButtonState state = event->state();
    if(state & ControlButton)
        btnStr+= "Ctl-";
    if(state & AltButton)
        btnStr+= "Alt-";
    if(state & ShiftButton)
        btnStr+= "Shft-";
    if(state & LeftButton)
        btnStr += "(Lft)-";
    if(state & MidButton)
        btnStr += "(Mid)-";
    if(state & RightButton)
        btnStr += "(Rgt)-";
    ButtonState button = event->button();
    if(button & LeftButton)
        btnStr += "Lft";
    if(button & MidButton)
        btnStr += "Mid";
    if(button & RightButton)
        btnStr += "Rgt";
    QString str = QString("%1 (%2,%3)(%4,%5)")
        .arg(btnStr)
        .arg(event->x()).arg(event->y())
        .arg(event->globalX()).arg(event->globalY());
    emit description(str);
}