信号与槽
void MainWindow::on_lineEdit_textChanged(QString)
{
double text = ui->lineEdit->text().toDouble();
double result = text*25.4;
qDebug() << "change 111";
ui->lineEdit_2->setText(QString::number(result));
}
void MainWindow::on_lineEdit_2_textChanged(QString)
{
double text = ui->lineEdit_2->text().toDouble();
double result = text/25.4;
qDebug() << "change 222";
ui->lineEdit->setText(QString::number(result));
}
-----------------------------------
输出为:
change 111
change 222
问题:
1. 为什么没有循环下去呢,照理说:1修改了2,2中又修改了1,会不断的循环下去啊?
2. on_lineEdit_2_textChanged(QString),参数只有type,没有名字。要怎么知道这个名字呢?还是要自己connect才会有?
[解决办法]
lineEdit的值都没发生变化,怎么会循环执行呢?!
比如:
1.开始我在lineEdit中输入1:
2.lineEdit改变,执行on_lineEdit_textChanged(QString ),将25.4写入lineEdit_2;
3.lineEdit_2改变,执行on_lineEdit_2_textChanged(QString ),将25.4/25.4 = 1写入lineEdit;
4.这个过程之后lineEdit都没有变化,当然不会往下执行了。
[解决办法]
on_lineEdit_2_textChanged(QString),参数只有type,没有名字。要怎么知道这个名字呢?还是要自己connect才会有?
这个问题不太明白,你要名字干嘛,这个函数就表示当lineEdit_2中的内容发生改变时就调用该函数。
lineEdit_2中的内容默认类型是QString。
[解决办法]
1.为什么没有循环下去呢,照理说:1修改了2,2中又修改了1,会不断的循环下去啊?
至于这个,就是你修改的过程必须是真的修改了值,如果你修改的值,与从前刚好相同,ontextChanged就刚好不响应了!
就这么简单!