Доброго времени суток.
Разрабатываю графический интерфейс для своего приложения.
Понадобилось много полей ввода. Можно конечно было их сделать с помощью QTableWidget. Но, я сделал с помощью QLineEditов. И сейчас уже не хочется менять, так как написано много кода.
В приложении надо сделать так, что если пользователь удалил полностью текст в LineEdit и переместился на другое поле или вкладку, то поле автоматически заполнялось бы либо предыдущим значением, либо "0.0". Я сделал - "0.0", так как это легче.
Сначала для этого я пытался связать сигналы QLabel со своим слотом
void MainWindow::slotFinishedEdit(QWidget * wg)
{
if(qobject_cast<LineEdit *>(wg)->text().count()<1)
qobject_cast<QLineEdit *>(wg)->setText("0.0");
}
Проблема оказалась в том, что подходящего сигнала у QLineEdit я не нашёл. Сигнал editingFinished() срабатывает только тогда, когда в поле есть текст. Поэтому пришлось наследовать класс QLineEdit и в событии
void LineEdit::focusOutEvent(QFocusEvent *)
{
emit signalMouseOut();
}
посылать собственный сигнал.
Но после этого создалось такое впечатление, что каждый LineEdit живёт своей жизнью. После перехода в другое поле в старых остаются мигающие каретки. Причём текст вводится в текущем поле, как и надо.
Пробовал чистить фокус focusclear и т.д. Ничего не помогло - мигающие каретки.
Помогите либо избавиться от мигающих кареток, либо сделать так, чтобы после смены поля, в случае если в нём ничего нет, предыдущее заполнялось значением.