peppeのおかげです。
次のサブクラスは、フォーカスが当たったときにlineEditテキストを格納します。テキストが変更されるたびに、テキストが開始時のテキストと同じかどうかをチェックし、テキストがない場合はtextEditedCustom(QString)を送出します。
ヘッダーに移動します。
class customQLineEdit: public QLineEdit
{
Q_OBJECT
public :
explicit customQLineEdit(QWidget* parent = 0);
explicit customQLineEdit(const QString &str, QWidget* parent=0);
signals:
void textEditedCustom(const QString& text);
public slots:
void on_Text_Edited_custom(const QString& currentText);
protected:
QString previousText;
virtual void focusInEvent(QFocusEvent* e);
};
とする.cpp一部
customQLineEdit::customQLineEdit(QWidget* parent):
QLineEdit(parent)
{
connect(this , SIGNAL(textEdited(QString)) ,
this , SLOT(on_Text_Edited_custom(QString)));
}
customQLineEdit::customQLineEdit(const QString &str, QWidget* parent):
QLineEdit(str , parent)
{
connect(this , SIGNAL(textEdited(QString)) ,
this , SLOT(on_Text_Edited_custom(QString)));
}
void customQLineEdit::focusInEvent(QFocusEvent* e)
{
previousText = text();
QLineEdit::focusInEvent(e);
}
void customQLineEdit::on_Text_Edited_custom(const QString& txt)
{
if(previousText != txt)
emit textEditedCustom(txt);
}
を次に、あなたがメンバ変数の現在のテキストをコピーすることができている。この
connect(nameLineEdit , SIGNAL(textEditedCustom(QString)) ,
this , SLOT(on_name_Changed(const QString &)));
サブクラス、オーバーライド 'focusInEvent'のようにそれを購読します比較を行うあなたのスロットに 'textChanged'を自己接続し、行編集が実際に変更されたかどうかを示すシグナルを出しますか? – peppe
@peppeこれを答えにするには気をつけますか? T.Zakでない場合:自分の質問に対する答えとしてあなたがしたことを(いくつかの詳細/コードとともに)書くための回答がまだない場合は間違いではない – Hayt