Russian Qt Forum
Ноябрь 23, 2024, 10:18
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Обработать сигналы с qLineEdit. Автоматизировать обработку полей. (Прочитано 10383 раз)
Hero Sanya
Новичок
Offline
Сообщений: 34
Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
:
Май 20, 2020, 13:50 »
У меня в программе куча полей qLineEdit.
У каждого поля, мне нужно перейти к слоту от изменения текста в них.
Но так как полей много, очень много, чтобы не писать кучу однотипных методов, я просто создаю один единственный слот для обработки всех полей, которые будут обрабатывать сигналы изменения текста.
Проблема заключается в том, что я не знаю что вставлять в качестве объекта обращения ui(на скриншоте это obj), т. е. мне нужно, чтобы то поле, что посылает сигнал, и обрабатывалось(я же не смогу изменить название поля в программе, когда она запущена).
Вместо obj, должно стоять название поля qLineEdit, от которого идёт сигнал по идеи. Или sender возвращает что то другое(Я думаю, что он возвращает имя того, кто посылает сигнал)?
«
Последнее редактирование: Май 20, 2020, 13:53 от Hero Sanya
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #1 :
Май 20, 2020, 13:58 »
ui-> убери, сделай
obj->text().toDouble(&ok);
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Hero Sanya
Новичок
Offline
Сообщений: 34
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #2 :
Май 20, 2020, 14:00 »
Цитата: Пантер от Май 20, 2020, 13:58
ui-> убери, сделай
obj->text().toDouble(&ok);
Тогда обработка не происходит. Да, компиляция проходит, но ограничения на поля, из метода, не срабатывают(там если что, ограничения для ввода в поля до вещественных чисел).
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #3 :
Май 20, 2020, 14:18 »
Попробуй другой сигнал, там что-то было типа textEdited или вроде того.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #4 :
Май 20, 2020, 15:51 »
Цитата: Hero Sanya от Май 20, 2020, 14:00
... (там если что, ограничения для ввода в поля до вещественных чисел).
Если что, то для ограничения ввода в QLineEdit можно использовать
QValidator
.
Записан
Пока сам не сделаешь...
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #5 :
Май 20, 2020, 16:02 »
А можно QDoubleSpinBox
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Hero Sanya
Новичок
Offline
Сообщений: 34
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #6 :
Май 20, 2020, 16:04 »
Цитата: Пантер от Май 20, 2020, 14:18
Попробуй другой сигнал, там что-то было типа textEdited или вроде того.
Даже так не срабатывает. Да и потом, если я вместо obj пишу конкретное поле(например lineEdit_1), то всё нормально, функция делает что должна.
Записан
Hero Sanya
Новичок
Offline
Сообщений: 34
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #7 :
Май 20, 2020, 16:05 »
Цитата: ViTech от Май 20, 2020, 15:51
Цитата: Hero Sanya от Май 20, 2020, 14:00
... (там если что, ограничения для ввода в поля до вещественных чисел).
Если что, то для ограничения ввода в QLineEdit можно использовать
QValidator
.
Да, я знаю, просто потом планируются необычные ограничения для полей, какие конкретно не знаю, поэтому через него не получится.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #8 :
Май 20, 2020, 16:09 »
Перепроверяй, ты что-то делаешь не так. Сделай вывод в консоль через qDebug того, что тебе прилетает в функцию.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #9 :
Май 20, 2020, 17:02 »
Цитата: Hero Sanya от Май 20, 2020, 16:04
если я вместо obj пишу конкретное поле(например
lineEdit_1
)
на картинке используются не такие простые названия переменных, там всякие Lyner_1_1, может в этом и дело?
и кстати вставлять код текстом куда лучше.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Hero Sanya
Новичок
Offline
Сообщений: 34
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #10 :
Май 20, 2020, 19:25 »
Цитата: kambala от Май 20, 2020, 17:02
Цитата: Hero Sanya от Май 20, 2020, 16:04
если я вместо obj пишу конкретное поле(например
lineEdit_1
)
на картинке используются не такие простые названия переменных, там всякие Lyner_1_1, может в этом и дело?
и кстати вставлять код текстом куда лучше.
Нет, не в этом. Дело в том, что мы не обращаемся к ui, то есть к графическому интерфейсу. Нужно обратится к ui, от него обратится к конкретному объекту и сделать конкретное дело. В моём случае, я не могу обратится к конкретному объекту, мне нужно чтобы программа сама поняла к какому объекту ей нужно обратится.Я не знаю как ей это дать понять. Я читал документацию и нашёл какой то sender, который по описанию вроде как именно это и делает. Узнал как его использовать. Однако полученный объект не пропускает компилятор. Здесь мне уже успели подсказать. что можно убрать ui. Теперь я понял, что в таком случае, мы будем применять изменения к объекту, которая переменная, а не поле в программе. Такое компилятор пропускает, но такой код не имеет смысла. Вот в чём проблема.
То есть, программа сама должна узнавать, какое поле кинуло сигнал.Для этого я кинул скрин с сигналами, может я не правильно отправляю сигнал, или может сендер не так использую.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #11 :
Май 20, 2020, 20:10 »
по тем кусочкам кода, которые видно, все написано правильно. Выкладывай тогда полный проект, может ошибка в другом месте
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Hero Sanya
Новичок
Offline
Сообщений: 34
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #12 :
Май 21, 2020, 00:42 »
Цитата: kambala от Май 20, 2020, 20:10
по тем кусочкам кода, которые видно, все написано правильно. Выкладывай тогда полный проект, может ошибка в другом месте
Даааа, там очень много кода. Думаю, в итоге легче разобраться просто создавая кучу однотипных методов под каждое поле.
В любом случае, я бы хотел знать, правильно ли я конекты записал(вначале он берёт поле, отслеживая с него сигнал о изменении, в (this), отправляя обрабатывать в слот(block_symbols_in_polya()). Отладчик кстати показал, что у меня тупо не входит в метод (block_symbols_in_polya(). Там не меняются переменные. Единственная причина, это неправильно написанный сендер или инициализация указателя, ну или, он вообще один раз слушает сигналы, сразу на старте программы и забывает про них.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #13 :
Май 21, 2020, 07:29 »
У тебя что-то не так где-то в другом месте. Я тебе предлагаю создать новый проект, попытаться там воспроизвести эту проблему, приложить проект сюда, а мы посмотрим и подкорректируем тебя.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
tamplier
Новичок
Offline
Сообщений: 40
Re: Обработать сигналы с qLineEdit. Автоматизировать обработку полей.
«
Ответ #14 :
Май 21, 2020, 08:11 »
Цитата: Hero Sanya от Май 20, 2020, 13:50
У меня в программе куча полей qLineEdit.
У каждого поля, мне нужно перейти к слоту от изменения текста в них.
Но так как полей много, очень много, чтобы не писать кучу однотипных методов, я просто создаю один единственный слот для обработки всех полей, которые будут обрабатывать сигналы изменения текста.
Проблема заключается в том, что я не знаю что вставлять в качестве объекта обращения ui(на скриншоте это obj), т. е. мне нужно, чтобы то поле, что посылает сигнал, и обрабатывалось(я же не смогу изменить название поля в программе, когда она запущена).
Вместо obj, должно стоять название поля qLineEdit, от которого идёт сигнал по идеи. Или sender возвращает что то другое(Я думаю, что он возвращает имя того, кто посылает сигнал)?
Создаешь свой класс и наследуешь его от QLineEdit. И в этом классе можно определить слот и "приконнектить" его к нужному сигналу (этого же класса). Я бы так делал.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...