К сожалению, я не думаю, что есть способ достичь этого без наследования - если вы хотите, чтобы текст сочетался с сигналом или выполнялась некоторая пользовательская обработка в вызываемом слоте.
Если нет, вы можете просто использовать сигнал «returnPressed», исходящий от QLineEdit, и какой-то ранее существовавший слот, который я не мог знать.
Вот мое решение с использованием наследования.
Чтобы создать свой собственный слот, вам нужно создать унаследованный класс. Унаследуйте это от Qobject, прямо или косвенно.
//myClass.h
#ifndef myclass_h_
#define myclass_h_
#include <QObject>
class myClass: public QObject
{
// important
Q_OBJECT;
....
public slots:
void takeText(QString p_value);
};
#endif
И чтобы получить такой сигнал от QLineEdit, вам также нужно что-то нестандартное
//myLineEdit.h
#ifndef mylineedit_h_
#define mylineedit_h_
#include <QLineEdit>
class myLineEdit: public QLineEdit
{
// important
Q_OBJECT;
....
public slots:
void handleReturnPressed();
signals:
void newText(QString p_value);
};
#endif
А потом сделай это
myLineEdit::myLineEdit()
{
connect(this, returnPressed(),
this, handleReturnPressed());
}
void myLineEdit::handleReturnPressed()
{
emit(newText(text());
}
После этого создайте объект myClass и подключите к нему сигнал.
myClass * thing = new myClass();
myLineEdit* lineEdit = new myLineEdit();
connect(lineEdit, SIGNAL(newText(QString),
things, SLOT(takeText(QString));