Название: Текст в редактируемом комбобоксе и слот accept() диалога Отправлено: radislav72 от Май 08, 2010, 16:14 Здравствуйте!
Есть диалоговое окно, и на нем несколько LineEdit, один редактируемый Combobox и ButtonBox. При наборе в комбобоксе текста работает autocomplete, и автоматически заполняется нужным текстом. Когда юзер нажимает кнопку "ОК" в ButtonBox-е, срабатывает слот accept(), в котором читаются все введенные значения формы и записываются в БД- то есть все Ок :) Но тут возникла такая проблемка: когда юзер нажимает на клавиатуре кнопку Enter при активном комбобоксе, то тоже срабатывает тот же слот accept(), но попытка чтения введенного в комбобокс значения всегда дает пустую строку. Что надо сделать, чтобы прочитать не пустую строку, а введенный текст? "Обходной маневр" в виде принудительной программной смены фокуса типа ui->ledBName->setFocus(); не дал ничего. Вид окна с комбобоксом: (http://s003.radikal.ru/i202/1005/9a/9818ab07625bt.jpg) (http://radikal.ru/F/s003.radikal.ru/i202/1005/9a/9818ab07625b.jpg.html) Если в ситуации, показанной на рисунке, нажать клавишу Enter, то чтение строки из комбобокса в слоте accept() Код: QString settl = ui->cbSettl->currentText().trimmed(); Название: Re: Текст в редактируемом комбобоксе и слот accept() диалога Отправлено: _govorilka от Май 08, 2010, 18:10 Попробуй считывать текст вот так:
Код: comboBox->lineEdit()->text(); Название: Re: Текст в редактируемом комбобоксе и слот accept() диалога Отправлено: radislav72 от Май 08, 2010, 18:28 Код: comboBox->lineEdit()->text(); Такое тоже пробовал- результат одинаковый :( Название: Re: Текст в редактируемом комбобоксе и слот accept() диалога Отправлено: radislav72 от Май 10, 2010, 08:23 Ух, кажется разобрался :)
Вроде-бы дело в том, что при редактировании текста в комбобоксе в режиме autocomplete нажатие Enter должно "фиксировать" введенный текст. Вместе с тем, нажатие Enter вызывает accept диалога. И accept срабатывает ДО того, как "зафиксируется" текст в комбобоксе. По крайней мере, чтение текста из комбобокса в eventFilter, настроенном на QEvent::KeyPress (и key() == Qt::Key_Return), дало нужный результат. Название: Re: Текст в редактируемом комбобоксе и слот accept() диалога Отправлено: mal от Май 11, 2010, 07:28 ничто не мешает ввести функцию возврата данных из диалога, которая будет возвращать содержимое комбобокса наружу, после отработки accept :
Код: ... |