Проблема с QLineEdit - PullRequest
       2

Проблема с QLineEdit

0 голосов
/ 02 февраля 2012

Я делаю проект Qt, где у меня есть некоторые QLineEdit, что, что бы я ни вкладывал в них, они не получают никаких данных, а в других у меня нет этой проблемы.Также в некоторых из них, если я добавлю туда только один символ, он все еще думает, что у меня ничего нет, и тогда я не могу стереть этот символ.Я пытался использовать сигналы textChanged и editingFinished, но это все равно не работает.Вот что я попробовал:

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

, где numExt - это имя QLineEdit, иногда мне приходится нажимать клавишу ввода, и я получаю текст, но он не всегда работает

это объявление 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);

здесь я использовал его, чтобы сохранить его значение вдБ

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 ]

2 голосов
/ 02 февраля 2012

Похоже, вам нужно запустить отладчик, подобный тому, который есть в QtCreator, и посмотреть, какие у вас значения, когда вы:

  1. введите что-то в поле
  2. , что отправляется обратнополе

Это сузит его в большей степени в отношении того, в чем заключается проблема.
То есть: если речь идет о сохранении данных или получении данных.

1 голос
/ 02 февраля 2012

Вы создаете условие гонки с помощью приведенного выше кода. Если вы на самом деле привязываете сигнал / слот к изменению того же объекта, у вас будут проблемы. Как правило, вы не должны изменять текст, который редактируется одновременно с редактированием. Чтобы сделать его более сложным, помните, что нет никакой гарантии, что блок LineEdit не будет излучать несколько сигналов, прежде чем ваш слот будет фактически вызван для их обработки. Все зависит от того, когда цикл обработки событий действительно прерывается, чтобы обработать все.

Короче: не делай этого. Вместо этого опишите, какова ваша конечная цель, и, возможно, мы сможем найти реальный источник вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...