• 3326阅读
  • 2回复

编译找不到信号的定义 [复制链接]

上一主题 下一主题
离线rqzrqh
 

只看楼主 倒序阅读 楼主  发表于: 2009-05-20
头文件
#include <qwidget.h>
#include <qpushbutton.h>
#include <qstring.h>
#include <qlineedit.h>


class jisuanqi:public QWidget
{
Q_OBJECT
public:
     jisuanqi(QWidget *parent=0,const char* name=0);
private:
     QLineEdit   *lineedit;
     QPushButton *btn0;
     QPushButton *btn1;
     QPushButton *btn2;
     QPushButton *btn3;
     QPushButton *btn4;
     QPushButton *btn5;
     QPushButton *btn6;
     QPushButton *btn7;
     QPushButton *btn8;
     QPushButton *btn9;
     QPushButton *add;
     QPushButton *sub;
     QPushButton *mul;
     QPushButton *dev;
     QPushButton *result;
     QPushButton *on;
     QPushButton *off;
signals:
      void description(QString &);
slots:
      void btnzero(void);
      void xianshi(QString &);
};

部件定义
#include "jisuanqi.h"
#include <qlayout.h>

jisuanqi::jisuanqi(QWidget *parent,const char* name)
       :QWidget( parent, name)
{
setMinimumSize(300,350);
setMaximumSize(300,350);

QGridLayout *layout = new QGridLayout(this,5,5,5);

lineedit = new QLineEdit(this);
lineedit->setText("text");
lineedit->setFixedSize(320,50);
layout->addMultiCellWidget(lineedit,0,0,0,4);


btn0 = new QPushButton("0",this);
btn0->setFixedHeight(50);
connect(btn0 ,SIGNAL(click()) ,this ,SLOT(btnzero()) );
connect(this ,SIGNAL(description(QString &)) ,this ,SLOT(xianshi(QString &)) );
layout->addMultiCellWidget(btn0,4,4,0,2);

部分省略

}

void jisuanqi::btnzero( )
{
emit description("0");
}

void jisuanqi::xianshi(QString &str)
{
lineedit->setText(str);
}

编译出错
In file included from jisuanqi.cpp:1:
jisuanqi.h:34: parse error before `(' token
jisuanqi.cpp:91: no `void jisuanqi::btnzero()' member function declared in
   class `jisuanqi'
jisuanqi.cpp: In member function `void jisuanqi::btnzero()':
jisuanqi.cpp:92: no matching function for call to `jisuanqi::description(const
   char[2])'
jisuanqi.h:32: candidates are: void jisuanqi::description(QString&)
离线hercules

只看该作者 1楼 发表于: 2009-05-20
slots:
      void btnzero(void);
=>
     void btnzero();

void jisuanqi::btnzero( )
{
   emit description("0");
   =>
   emit description(QString("0"));

}
我的QQ号:337396132
欢迎大家加我为好友,一起学习Qt
离线rqzrqh

只看该作者 2楼 发表于: 2009-05-20
已经解决,按2楼的方法一样的

关键是emit description发送的是常量!!而且槽还必须是private
快速回复
限100 字节
 
上一个 下一个