我正在做一个Qt项目,我有一些QLineEdit
无论我放入什么内容都没有获得任何数据,而在其他项目中我没有这个问题。另外在其中一些如果我只放入一个字符,它仍然认为我什么也没有,然后我就不能删除那个字符。我尝试使用textChanged
和editingFinished
信号,但它仍然不起作用。这就是我试过的:
void MainWindow::on_numExt_textChanged(const QString &arg1)
{
ui->numExt->setText( arg1 );
}
其中numExt
是QLineEdit
名称,有时我必须按Enter键才能获得文字,但它不会一直有效
这是QLineEdit
:
<widget class="QLineEdit" name="numExt">
<property name="font">
<font>
<pointsize>6</pointsize>
</font>
</property>
</widget>
并在ui_mainwindow.h文件中显示如下:
numExt = new QLineEdit(frame_5);
numExt->setObjectName(QString::fromUtf8("numExt"));
numExt->setFont(font);
这里我用它来将它的值保存到db
中insertQuery = "update content set calle='" + ui->calle->text().toUtf8() + "', numExt='"+ ui->numExt->text().toUtf8() +"', numInt='"+ ui->numInt->text().toUtf8() +"', colonia='" + ui->colonia->text().toUtf8() + "', CP='" + ui->CP->text().toUtf8() + "' where folio='" + ui->Folio->text().toUtf8() + "'";
query.exec(insertQuery);
我没有更改表单的任何属性。
我的目标是获取qlineedit中的文本,如果输入1个或更多字符则无关紧要。
答案 0 :(得分:2)
听起来你需要像QtCreator那样运行一个调试器,看看你的价值是什么:
这将缩小问题所在的范围 即:如果它在保存数据或检索数据。
答案 1 :(得分:1)
您正在使用上述代码创建竞争条件。如果您实际上绑定了一个信号/插槽来修改同一个对象,那么您将遇到麻烦。通常,您不应该在编辑的同时更改正在编辑的文本。为了使其更复杂,请记住,在您实际调用插槽来处理它们之前,无法保证LineEdit块不会发出多个信号。这一切都取决于事件循环实际上有什么时间来处理所有事情。
简而言之:不要那样做。相反,请描述您的最终目标,也许我们可以找到您问题的真正来源。