Подскажите как из фонового потока передать qobject* в гуи поток

с учетом того, что фоновой поток постоянно обновляет object* данные. Можно ли скопировать в другой объект и кинуть копию через сигнал-слот вместо этого оригинала, чтобы не мутить с мьютексами ?

66 ответов

30 просмотров

а через указатели? не очень понятно что у вас за qobject

roman---- Автор вопроса
zqtprog
а через указатели? не очень понятно что у вас за q...

передаю такое QList<Ring*> listring, где Ring это от qobject наследник, но если фоновой поток удалит listring, то гуи крэшнится из-за этого

roman ---
передаю такое QList<Ring*> listring, где Ring это ...

в гуи проверку указателя сделать. Ring через new же делается? после удаления приравнять к null_ptr или 0

roman ---
передаю такое QList<Ring*> listring, где Ring это ...

В сигнале передавать данные, а не указатель на объект. Зачем тебе указателями на изменяемые объекты кидаться?

roman---- Автор вопроса
Александр ⚛️
В сигнале передавать данные, а не указатель на объ...

данных много, тогда придется их руками из этого указателя выдирать куда-то и потом перекидывать)

roman ---
данных много, тогда придется их руками из этого ук...

Ну вот ты сам в свою ловушку попал. Всё логично же )

Александр ⚛️
В сигнале передавать данные, а не указатель на объ...

чтобы вам копию не создавать, как раз для этого так и отслеживаются изменяемые данные. причем пишут что данных много.

roman ---
данных много, тогда придется их руками из этого ук...

выдирать? указатель это всего лишь ссылка/адрес на ваш единственный объект

Александр ⚛️
В сигнале передавать данные, а не указатель на объ...

обратите внимание как в Qt исходниках везде в функциях и слотах передается QString.. через что? правильно! через указатель

zqtprog
обратите внимание как в Qt исходниках везде в функ...

Из потока в поток? Не знал, ну извините.

roman---- Автор вопроса
zqtprog
в гуи проверку указателя сделать. Ring через new ж...

вот приравниваю к null, но почему-то из qlist повторно извлекается тот же указатель вместо нуля, где ошибка ?)

roman---- Автор вопроса
roman ---
screenshot вот приравниваю к null, но почему-то из qlist повт...

так ты присваиваешь ему тоже самое значение

roman---- Автор вопроса
mefest
так ты присваиваешь ему тоже самое значение

это слепил вместе симуляцию очистки данных в потоке и чтение с проверкой на null в гуи

roman ---
это слепил вместе симуляцию очистки данных в поток...

не очень понял, но кажется код выводит в консоль все правильно

roman ---
screenshot вот приравниваю к null, но почему-то из qlist повт...

Вы хотите в 801-й строке записать NULL в лист?

roman---- Автор вопроса
Iliya S.
Вы хотите в 801-й строке записать NULL в лист?

да в потоке фоновом, чтобы при чтении в гуи сделать проверку на null

roman ---
screenshot вот приравниваю к null, но почему-то из qlist повт...

Переменная ring хранит в себе указатель, который ты взял через .at(), ты записал эту локальную копию указателя на ноль, а потом снова присвоил ей тоже самое значение

Александр ⚛️
Из потока в поток? Не знал, ну извините.

да хоть куда… а как и через что потоки должны общаться? они ж зачем-то существуют и должны брать исходные данные откуда-то и результат куда то девать

roman---- Автор вопроса
Iliya S.
https://doc.qt.io/qt-6/implicit-sharing.html читал...

и к чему это? вообще не по теме

Iliya S.
https://doc.qt.io/qt-6/implicit-sharing.html читал...

задача: передать из одного потока в другой поток массив float… как?

Iliya S.
Вы же про QString писали

QString по идее тот же массив байтов..

zqtprog
QString по идее тот же массив байтов..

Посмотрите ссылку и про implicit sharing в Qt =)

Iliya S.
Посмотрите ссылку и про implicit sharing в Qt =)

не увидел там ничего полезного для передачи массивов данных без копирования между потоками… указатели - сила.

roman---- Автор вопроса
zqtprog
не увидел там ничего полезного для передачи массив...

а если указателем передал из потока в поток qobject какой-то, то есть шансы словить одновременное обращение к нему в этих потоках ? тут вроде мьютекс надо ?

zqtprog
не увидел там ничего полезного для передачи массив...

Странно, QList, QVector explicit sharing. Поэтому если посылать через emit получишь искомое

зачем использовать еще неизвестно как написанные обвёртки над указателями , если и так всё можно самому сделать через сами указатели, больше понимая сам процесс…

zqtprog
зачем использовать еще неизвестно как написанные о...

так давайте вообще не использовать никаких оберток и будем велосипеды создавать. если работаете с Qt то надо знать как работает фреймворк

roman---- Автор вопроса
Iliya S.
https://t.me/qt_chat/310091

там нет ответа на вопрос, как передать qobject из потока в поток по указателю либо значению)

zqtprog
зачем использовать еще неизвестно как написанные о...

Здесь же про фреймворк чат? Фреймворк - это рамки, в которые разработчик добровольно себя "засовывает". Не надо считать себя умнее создателей Ф, пытаться сломать все и пр и др.

roman---- Автор вопроса
Iliya S.
Ответ там есть, Вы не смотрели

можешь ткнуть) на нашел)

roman ---
можешь ткнуть) на нашел)

Могу QObject по дизайну Qt должен в своем потоке находиться, т.е. он не предназначен для общего владения

roman---- Автор вопроса
Iliya S.
Могу QObject по дизайну Qt должен в своем потоке н...

это я читал, и как мне передать собранные данные тогда ?)

roman---- Автор вопроса
roman ---
сигналы слоты нужны)

Тогда меняйте архитектуру

mefest
так давайте вообще не использовать никаких оберток...

зачем усложнять, Qt прекрасен другими многими вещами… но зачем использовать лишние промежуточные обвёртки, если ты сам можешь чуть ли на winapi или linuxapi это реализовать… сколько раз натыкался уже на кривости Qt-классов, включая QThread, QImage, QPixmap и т.д. и даже казалось бы простым классом QFile. Что использовать, выбор каждого. можно делать через апи, а можно хоть через 10 оболочек и обверток друг над другом, собирая баги… и умность тут ни при чем… каждый пишет как ему удобно. всё зависит от задачи. а то есть фанаты доя простых задач заниматься десятиуровневым наследованием классов, в конце которого тащится указатель на родителя…

Iliya S.
Возможно не нужно наследовать QObject?

не видно всего кода :) может там гораздо все проще :)

roman---- Автор вопроса
Iliya S.
Возможно не нужно наследовать QObject?

посмотрел внимательнее класс, сигналов нету в нем, можно убирать наследование)

zqtprog
зачем усложнять, Qt прекрасен другими многими веща...

надо знать инструмент которым пользуешься, без этого тяжело. каждый может писать как ему нравится, но это совсем не значит что так правильно и стоит такой подход продвигать новичкам

zqtprog
зачем усложнять, Qt прекрасен другими многими веща...

Не забывайте, что после Вас на проект, возможно, придет другой человек. Человеку скажут, что проект на Qt (а это - фактически надмножество плюсов), а там мешанина из std, сырых указателей и слепленных на коленке паттернов. Человек этот будет психопат и будет знать где Вы живете. Взяли фреймворк - используйте рекомендации от создателей. Не нужно расстраивать психопата =)

zqtprog
зачем усложнять, Qt прекрасен другими многими веща...

обёртки qt кроссплатформенные, как и стд, апи использовать всё же не стоит)

mefest
надо знать инструмент которым пользуешься, без это...

я за близость к api, как за более лучшее понимание всех процессов… Qt -великолепный gui, QString это просто находка 😁 и т.д. Но надо понимать что и для чего делается… даже ту же работу по tcp/udp лучше сделать самому на апи, чем использовать Qt-классы

Aniki Hi$ok@ 🌈 Z 🐀
обёртки qt кроссплатформенные, как и стд, апи испо...

😂😂😂 посмотрите код, там же тот ifdefine над апи.. Qt это тоже linux-api или winapi только в красивой обвертке

zqtprog
😂😂😂 посмотрите код, там же тот ifdefine над апи.. ...

при компиляции твой код на апи не превратится в код на другом апи

Aniki Hi$ok@ 🌈 Z 🐀
при компиляции твой код на апи не превратится в ко...

прочитайте выше :) делается так же как и в Qt… два и более разветвления в зависимости от ОС.. еще раз говорю, посмотрите исходный код Qt

твоя работа с голыми сокетами, архивные кадры

иногда это как раз Qt на вашем видео

zqtprog
я за близость к api, как за более лучшее понимание...

такое лучше в других чатах продвигать. чат по Qt и тут стараемся обсуждать решения в рамках Qt. предлагаю закрыть тему чтоб не переходить на холивар

zqtprog
у Романа то получилось? 😁

если хотите помочь своим способом пишите ему в лс. на его вопросы отвечали

zqtprog
прочитайте выше :) делается так же как и в Qt… два...

мне все равно как работает обёртка qt под капотом, я просто подключаю хидер и всё. А в другом проекте хочу видеть тоже самое, я не хочу разбираться в чьём то велосипеде. Так же я получаю гарантию, что решение от qt/std точно протестировано и работает как надо

zqtprog
у Романа то получилось? 😁

Роману, чтобы получилось - нужно описать проблему. Что за данные, что за требования к системе. Архитектуру, в общих чертах. Можно между потоками и через БД данные гонять.

Iliya S.
Роману, чтобы получилось - нужно описать проблему....

поэтому и хотелось от него «огласите весь список плжалуйста».

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

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

Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Всем привет В общем надо на странице вакансии вывести вакансии с hh, но когда я пишу код в разделе Code ошибка Invalid URL format. The URL should start with the forward slash...
A da
1
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
DataGrip не сканирует почему-то все таблицы, хотя раньше показывал их че за херня, сталкивались?
Magic
9
мне как апи hh написать?
A da
3
Привет! Подскажите может кто сталкивался, при создании купона выходит вот в таком виде окно. Как поправить это?
Ruslan
4
Карта сайта