Всем привет, имею простейший код для калькулятора 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 ответов

16 просмотров

ну разберись поэтапно посмотри сначала, где фокус на самом деле, пока без особых заморочек в начале метода 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, в этом и была ошибка.

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта