按下按钮时将复制的文本添加到lineEdit

时间:2019-04-30 14:42:42

标签: c++ qt

我刚刚开始阅读QT,但我不太了解SIGNAL SLOT函数。 我有一个带有2个QLineEdit的表单,并且我想在单击按钮时将文本从第一个QLineEdit复制到第二个QLineEdit,但是我不知道如何正确设置连接功能。

我尝试将textChanged函数绑定到自身,但结果是每次按下字母时,文本都会编辑,因为这就是信号。

newForm::newForm() {
    widget.setupUi(this);
    connect(widget.nameEdit, SIGNAL(textChanged(const QString&)),
            this, SLOT(textChanged(const QString&)));
    connect(widget.pushMe, SIGNAL(pressed()),
            this, SLOT(handleButton()));
}
void newForm::handleButton(){
}

我认为我必须在handleButton函数中做一些事情,但是我不理解如何从第一行读取和复制文本,因为text()在handleButton中不起作用

1 个答案:

答案 0 :(得分:0)

要将文本从第一个QLineEdit(称为widget.nameEdit)复制到第二个widget.nameEdit2,单击按钮时,可以使用一个信号/插槽连接来完成此操作。 QLineEdit中的setText() lambda

connect(widget.pushMe, &QPushButton::released,this, [=](){  
widget.nameEdit2.setText(widget.nameEdit.text());
};

您不需要使用第一个QLineEdit textChanged()信号,并且当您按下按钮时,上述连接会将第一个字段中的整个文本复制到第二个字段中。另一方面,如果您希望第二QLineEdit随着文本在第一字段中的变化而不断更新,则可以使用第一字段的textchanged()信号到第二的setText(): / p>

connect(widget.nameEdit, &QLineEdit::textChanged,
            widget.nameEdit2, &QLineEdit::setText);