QLineEdit问题

时间:2012-02-02 16:22:10

标签: c++ qt

我正在做一个Qt项目,我有一些QLineEdit无论我放入什么内容都没有获得任何数据,而在其他项目中我没有这个问题。另外在其中一些如果我只放入一个字符,它仍然认为我什么也没有,然后我就不能删除那个字符。我尝试使用textChangededitingFinished信号,但它仍然不起作用。这就是我试过的:

void MainWindow::on_numExt_textChanged(const QString &arg1)
{
    ui->numExt->setText( arg1 );
}

其中numExtQLineEdit名称,有时我必须按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个或更多字符则无关紧要。

2 个答案:

答案 0 :(得分:2)

听起来你需要像QtCreator那样运行一个调试器,看看你的价值是什么:

  1. 在字段中输入内容
  2. 什么被送回现场
  3. 这将缩小问题所在的范围 即:如果它在保存数据或检索数据。

答案 1 :(得分:1)

您正在使用上述代码创建竞争条件。如果您实际上绑定了一个信号/插槽来修改同一个对象,那么您将遇到麻烦。通常,您不应该在编辑的同时更改正在编辑的文本。为了使其更复杂,请记住,在您实际调用插槽来处理它们之前,无法保证LineEdit块不会发出多个信号。这一切都取决于事件循环实际上有什么时间来处理所有事情。

简而言之:不要那样做。相反,请描述您的最终目标,也许我们可以找到您问题的真正来源。

相关问题