あなたのコードは間違っています:
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 : テキストに a を使用していると思いますQLineEdit
。