Всем привет, имею простейший код для калькулятора void MainWindow::CE_clicked() {

if (ui->lineEdit_input->hasFocus()){
ui->lineEdit_input->backspace();}
else if (ui->lineEdit_input_X->hasFocus())
ui->lineEdit_input_X->backspace();
}

поле 1 и поле 2 типа LineEdit.
на полях настроено focusPolicy(ClickFocus)

Если я ввожу в поле 1 значения потом нажимаю "CE" все корректно отрабатывает, удаляется последний введенный символ. Если после ввода значений в поле 1 я переключаюсь на поле 2 затем опять на поле 1 то при нажатии "CE" ничего не происходит, т.е. не удаляются символы из строки. В чем ошибка?

10 ответов

20 просмотров

ну разберись поэтапно посмотри сначала, где фокус на самом деле, пока без особых заморочек в начале метода qDebug()<<ui->lineEdit_input->hasFocus()<<ui->lineEdit_input_X->hasFocus();

Павел-Доронин Автор вопроса
Angry Subst
ну разберись поэтапно посмотри сначала, где фокус ...

я проверял это с помощью QWidget * widgetName = qApp->focusWidget(); qDebug () << widgetName->objectName(); сейчас еще раз попробую

Павел Доронин
screenshot

ну значит тебе надо переместить курсор в позицию иную от 0 в lineEdit If no text is selected, deletes the character to the left of the text cursor and moves the cursor one position to the left когда ты тыкаешь в твой LineEdit, посмотри куда именно курсор устанавливается

Можно попробовать так: void MainWindow::CE_clicked() { QLineEdit *line = nullptr; if (ui->lineEdit_input->hasFocus()) { line = ui->lineEdit_input;} else if (ui->lineEdit_input_X->hasFocus()) { line = ui->lineEdit_input_X;} if(!line) return; line->setCursorPosition(line->text().length()); line->backspace(); }

Павел-Доронин Автор вопроса
Angry Subst
ну значит тебе надо переместить курсор в позицию и...

я понял фишку с курсором, спасибо, вопрос теперь как автоматически выставлять его на последний символ строки, в примере "123" ставим после тройки.

Павел Доронин
я понял фишку с курсором, спасибо, вопрос теперь к...

а надо? lineEdit->setText(lineEdit->text().chop(1)) типа такого... чем не устраивает?

Павел Доронин
я понял фишку с курсором, спасибо, вопрос теперь к...

ну или смотри QLieEdit::setCursorPosition(int) так кажется метод зовется

Павел-Доронин Автор вопроса
Mr.Mait
Можно попробовать так: void MainWindow::CE_clicked...

помогло, большое спасибо, в самом начале я поставил запрет на ввод с клавиатуры. ui->lineEdit_input->setFocus(); ui->lineEdit_input->setReadOnly(true); после этого при переключении между окнами CursorPosition не учитывал, по умолчанию он равен 0, в этом и была ошибка.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта