首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

信号与槽,该怎么解决

2012-09-06 
信号与槽void MainWindow::on_lineEdit_textChanged(QString){double text ui-lineEdit-text().toDoub

信号与槽
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就刚好不响应了!

就这么简单!

热点排行