QLineEdit 无法发信号,该如何处理

QLineEdit无法发信号

我在别的程序中突然发现,QLineEdit无法发射信号,特意测试一下,代码如下:

#ifndef ABC_H

#define ABC_H

 

#include

#include "ui_abc.h"

 

class abc : public QWidget

{

      Q_OBJECT

 

public:

      abc(QWidget*parent = 0, Qt::WFlags flags = 0);

      ~abc();

 

public slots:

      voidabcdef(const QString& text);

 

private:

      Ui::abcClassui;

 

      QStringm_strTemp;

};

 

#endif // ABC_H

 

#include "abc.h"

 

abc::abc(QWidget *parent, Qt::WFlags flags)

      :QWidget(parent, flags)

{

      ui.setupUi(this);

      connect(ui.lineEdit,SIGNAL(textChanged(const QString& temp)),this,SLOT(abcdef(const QString& text)));

}

 

abc::~abc()

{

 

}

 

void abc::abcdef(const QString& text)

{

      m_strTemp= text;

}

 

 

感觉上面的代码好像没有问题啊,请问下,这个是为什么,谢谢!

 

解决方法:

connect(ui.lineEdit,SIGNAL(textChanged(const QString& temp)),this,SLOT(abcdef(const QString& text)));

改为connect(ui.lineEdit,SIGNAL(textChanged(const QString&)),this,SLOT(abcdef(const QString&)));

原因:

connect(sender,SIGNAL(signal),receiver,SLOT(slot));

这里signal和slot是不带参数的函数名。

你可能感兴趣的:(QT学习笔记)