我刚刚开始阅读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中不起作用
答案 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);