• 9811阅读
  • 5回复

【提问】void description(QString &);要在.cpp中定义吗? [复制链接]

上一主题 下一主题
离线gongyh
 

只看楼主 倒序阅读 楼主  发表于: 2005-09-12
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);
}
打工不是一辈子的事!
离线XChinux

只看该作者 1楼 发表于: 2005-09-12
不需要。signal不需要
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线gongyh

只看该作者 2楼 发表于: 2005-09-12
不需要,那能做什么, signal不是也可以看成函数吗,没有定义,功能不是不知道了吗
打工不是一辈子的事!
离线XChinux

只看该作者 3楼 发表于: 2005-09-12
Re:【提问】void description(QString &);要在.cpp中定义吗
signal不是函数
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线gongyh

只看该作者 4楼 发表于: 2005-09-12
在这里,什么作用?没有实现体,怎么知道做什么了!
打工不是一辈子的事!
离线XChinux

只看该作者 5楼 发表于: 2005-09-12
Re:【提问】void description(QString &);要在.cpp中定义吗
信号是需要emit出去供slot接收的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个