|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
||||||
Приконнектить сигнал к методу объекта09.02.2025, 00:12. Показов 5363. Ответов 22
Метки нет (Все метки)
Привет всем! Есть сигнал от кнопки, нужно чтобы при нажатии вызывался один из методов моего объекта (обычный объект, а не QObject). Метод без параметров. Делаю через эту перегрузку функции connect:
0
|
||||||
| 09.02.2025, 00:12 | |
|
Ответы с готовыми решениями:
22
Стоит ли создавать новый объект который будет производить "распределение" сигналов и слотов? Связать сигнал еще не существующего объекта со слотом QT GraphicsItem - передать сигнал в MainWindow чтобы на лейбле менялось значение при нажатии мишкой на графический объект |
|
86 / 60 / 12
Регистрация: 06.06.2013
Сообщений: 216
|
||||||
| 09.02.2025, 02:11 | ||||||
0
|
||||||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||
| 09.02.2025, 10:31 | ||
|
Anvis, дык если этот код разместисть в конструкторе, например, то опасность обратиться к мёртвому объекту (с2) при вызове вырастает до 100%.
Добавлено через 2 минуты
0
|
||
|
86 / 60 / 12
Регистрация: 06.06.2013
Сообщений: 216
|
|||||||
| 09.02.2025, 11:45 | |||||||
![]()
0
|
|||||||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
|||||||
| 09.02.2025, 12:11 | |||||||
|
А вообще... Сделай классу состояние, и увидишь как оно ломается.
1
|
|||||||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
||
| 09.02.2025, 13:33 [ТС] | ||
И да, коннект я делаю не в конструкторе объекта, а просто в main через статическую функцию, после создания объекта. Попробовал ещё через указатель на функцию-член - Qt такое не переваривает.
0
|
||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
|
| 09.02.2025, 14:59 | |
|
Geek Geekson, покажи код целиком.
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
|
| 09.02.2025, 17:08 [ТС] | |
|
ablex, да я уже переделал. Будет время - напишу примерчик простой. В общем, как я понял, Qt рассчитывает, что коннекты будут вызываться именно для QObject и обычно в конструкторе. А если это обычный объект, то только через костыли. Хотя буду рад если кто-то даст контрпример (если он есть вообще).
0
|
|
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||||
| 09.02.2025, 17:14 | ||||
|
0
|
||||
|
86 / 60 / 12
Регистрация: 06.06.2013
Сообщений: 216
|
|
| 10.02.2025, 00:42 | |
|
ablex, пользуясь случаем, как раз уточню для себя еще один момент. В процессе работы программы в отдельном потоке создаю наследников
QObject, коннекчу их к виджетам в главном и после отработки run() удаляю через delete. Я правильно понимаю, что никаких дополнительных действий я не должен предпринимать? Кроме, разве что, замены delete на deleteLater()?
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
||||||
| 10.02.2025, 14:24 [ТС] | ||||||
|
ablex, вот набросал пример:
Можно конечно создать кнопку не через new, а как обычно (с последующим взятием её адреса). Тогда варнинга не будет. Но у меня в проекте эти кнопки создаются функцией, поэтому только динамически. И есть ли другой способ связать кроме лямбды?
0
|
||||||
|
Диванный эксперт
|
|
| 10.02.2025, 15:25 | |
|
Если что, то
QObject::connect возвращает объект типа ConnectionЕго можно использовать в QObject::disconnect для удаления соединения.
0
|
|
|
2674 / 1336 / 480
Регистрация: 08.11.2016
Сообщений: 3,692
|
||
| 10.02.2025, 15:29 | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
||
| 10.02.2025, 15:57 [ТС] | ||
|
0
|
||
|
2674 / 1336 / 480
Регистрация: 08.11.2016
Сообщений: 3,692
|
|||||||
| 10.02.2025, 16:21 | |||||||
1
|
|||||||
|
Диванный эксперт
|
||
| 10.02.2025, 16:27 | ||
|
* Использовать "умные указатели"(shared_ptr, например) и передавать в лямбду копию указателя Так же может потребоваться сохранять все объекты соединений и отключать их при удалении объектов. По поводу delete VS deleteLater - если я правильно помню, то второй способ гарантирует, что объект будет удален только когда в очереди EventLoop не будет для него событий. То есть защищает от багов вида Use-After-Free.
0
|
||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
||
| 10.02.2025, 17:32 [ТС] | ||
|
0
|
||
|
2674 / 1336 / 480
Регистрация: 08.11.2016
Сообщений: 3,692
|
||
| 10.02.2025, 18:30 | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
|
| 10.02.2025, 18:36 [ТС] | |
|
Annemesski, да мне собсно и было интересно, насколько гибко можно взаимодействовать с обычными объектами.
0
|
|
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
|
| 10.02.2025, 18:54 | |
|
Geek Geekson, каждая кнопка цепляется к небольшой лямбде. В каждую такую лямбду захватывается лямбда, в которую передаётся нужный дополнительный параметр из этих маленьких лямбд
0
|
|
| 10.02.2025, 18:54 | |
|
Помогаю со студенческими работами здесь
20
Как послать сигнал (самодельный) методом emit из потока в другой поток?
Вызвать закрытый метод через объект
Qt соединить сигнал с сигналом одного и того же объекта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|