你的代码是错误的:
void QPushButton::setEnabled(bool);
不是 Qt 插槽。
- 通过该
static void QObject::connect(const QObject *, const char *, const QObject *, const char *);
方法连接的信号和槽必须得到相同的签名。这里你得到一个blablablaSignal(void);
带有“ blablablaSlot(bool);
”槽的“”信号。
- 连接插槽时不得传递参数。
- 与 不同,
void QLineEdit::textChanged(void);
信号不存在void QLineEdit::textChanged(const QString &);
。
所以你的代码最好看起来像这样:
#include <QLineEdit>
#include <QObject>
#include <QPushButton>
class UIBuilder {
public:
UIBuilder() : textEdit(new QTextEdit()), pushButton (new QPushButton())
{
// Do your stuff
QObject::connect(textEdit, SIGNAL(textChanged(const QString &)),
this, SLOT(enableSlot(const QString &)));
}
~UIBuilder()
{
delete textEdit;
delete pushButton;
}
protected:
QLineEdit * textEdit;
QPushButton * pushButton;
public slots:
void enableSlot(const QString &)
{
pushButton->setEnabled(true);
}
};
PS:我猜你使用 aQLineEdit
作为文本。