с учетом того, что фоновой поток постоянно обновляет object* данные. Можно ли скопировать в другой объект и кинуть копию через сигнал-слот вместо этого оригинала, чтобы не мутить с мьютексами ?
а через указатели? не очень понятно что у вас за qobject
передаю такое QList<Ring*> listring, где Ring это от qobject наследник, но если фоновой поток удалит listring, то гуи крэшнится из-за этого
в гуи проверку указателя сделать. Ring через new же делается? после удаления приравнять к null_ptr или 0
В сигнале передавать данные, а не указатель на объект. Зачем тебе указателями на изменяемые объекты кидаться?
данных много, тогда придется их руками из этого указателя выдирать куда-то и потом перекидывать)
Ну вот ты сам в свою ловушку попал. Всё логично же )
чтобы вам копию не создавать, как раз для этого так и отслеживаются изменяемые данные. причем пишут что данных много.
выдирать? указатель это всего лишь ссылка/адрес на ваш единственный объект
обратите внимание как в Qt исходниках везде в функциях и слотах передается QString.. через что? правильно! через указатель
Из потока в поток? Не знал, ну извините.
вот приравниваю к null, но почему-то из qlist повторно извлекается тот же указатель вместо нуля, где ошибка ?)
а at(..) что возвращает у QList?
Ring * возвращает
так ты присваиваешь ему тоже самое значение
это слепил вместе симуляцию очистки данных в потоке и чтение с проверкой на null в гуи
не очень понял, но кажется код выводит в консоль все правильно
Вы хотите в 801-й строке записать NULL в лист?
да в потоке фоновом, чтобы при чтении в гуи сделать проверку на null
Переменная ring хранит в себе указатель, который ты взял через .at(), ты записал эту локальную копию указателя на ноль, а потом снова присвоил ей тоже самое значение
да хоть куда… а как и через что потоки должны общаться? они ж зачем-то существуют и должны брать исходные данные откуда-то и результат куда то девать
https://doc.qt.io/qt-6/implicit-sharing.html читали?
на мьютексы намекаешь ?)
Вам другой ответ
и к чему это? вообще не по теме
задача: передать из одного потока в другой поток массив float… как?
Вы же про QString писали
QString по идее тот же массив байтов..
Посмотрите ссылку и про implicit sharing в Qt =)
не увидел там ничего полезного для передачи массивов данных без копирования между потоками… указатели - сила.
а если указателем передал из потока в поток qobject какой-то, то есть шансы словить одновременное обращение к нему в этих потоках ? тут вроде мьютекс надо ?
https://t.me/qt_chat/310091
Странно, QList, QVector explicit sharing. Поэтому если посылать через emit получишь искомое
зачем использовать еще неизвестно как написанные обвёртки над указателями , если и так всё можно самому сделать через сами указатели, больше понимая сам процесс…
так давайте вообще не использовать никаких оберток и будем велосипеды создавать. если работаете с Qt то надо знать как работает фреймворк
там нет ответа на вопрос, как передать qobject из потока в поток по указателю либо значению)
Здесь же про фреймворк чат? Фреймворк - это рамки, в которые разработчик добровольно себя "засовывает". Не надо считать себя умнее создателей Ф, пытаться сломать все и пр и др.
Ответ там есть, Вы не смотрели
можешь ткнуть) на нашел)
Могу QObject по дизайну Qt должен в своем потоке находиться, т.е. он не предназначен для общего владения
это я читал, и как мне передать собранные данные тогда ?)
Возможно не нужно наследовать QObject?
сигналы слоты нужны)
Тогда меняйте архитектуру
Передавайте любой explicit sharing обьект
зачем усложнять, Qt прекрасен другими многими вещами… но зачем использовать лишние промежуточные обвёртки, если ты сам можешь чуть ли на winapi или linuxapi это реализовать… сколько раз натыкался уже на кривости Qt-классов, включая QThread, QImage, QPixmap и т.д. и даже казалось бы простым классом QFile. Что использовать, выбор каждого. можно делать через апи, а можно хоть через 10 оболочек и обверток друг над другом, собирая баги… и умность тут ни при чем… каждый пишет как ему удобно. всё зависит от задачи. а то есть фанаты доя простых задач заниматься десятиуровневым наследованием классов, в конце которого тащится указатель на родителя…
не видно всего кода :) может там гораздо все проще :)
посмотрел внимательнее класс, сигналов нету в нем, можно убирать наследование)
надо знать инструмент которым пользуешься, без этого тяжело. каждый может писать как ему нравится, но это совсем не значит что так правильно и стоит такой подход продвигать новичкам
Не забывайте, что после Вас на проект, возможно, придет другой человек. Человеку скажут, что проект на Qt (а это - фактически надмножество плюсов), а там мешанина из std, сырых указателей и слепленных на коленке паттернов. Человек этот будет психопат и будет знать где Вы живете. Взяли фреймворк - используйте рекомендации от создателей. Не нужно расстраивать психопата =)
обёртки qt кроссплатформенные, как и стд, апи использовать всё же не стоит)
я за близость к api, как за более лучшее понимание всех процессов… Qt -великолепный gui, QString это просто находка 😁 и т.д. Но надо понимать что и для чего делается… даже ту же работу по tcp/udp лучше сделать самому на апи, чем использовать Qt-классы
😂😂😂 посмотрите код, там же тот ifdefine над апи.. Qt это тоже linux-api или winapi только в красивой обвертке
при компиляции твой код на апи не превратится в код на другом апи
прочитайте выше :) делается так же как и в Qt… два и более разветвления в зависимости от ОС.. еще раз говорю, посмотрите исходный код Qt
твоя работа с голыми сокетами, архивные кадры
иногда это как раз Qt на вашем видео
такое лучше в других чатах продвигать. чат по Qt и тут стараемся обсуждать решения в рамках Qt. предлагаю закрыть тему чтоб не переходить на холивар
вы в корне неправы
у Романа то получилось? 😁
если хотите помочь своим способом пишите ему в лс. на его вопросы отвечали
мне все равно как работает обёртка qt под капотом, я просто подключаю хидер и всё. А в другом проекте хочу видеть тоже самое, я не хочу разбираться в чьём то велосипеде. Так же я получаю гарантию, что решение от qt/std точно протестировано и работает как надо
Роману, чтобы получилось - нужно описать проблему. Что за данные, что за требования к системе. Архитектуру, в общих чертах. Можно между потоками и через БД данные гонять.
поэтому и хотелось от него «огласите весь список плжалуйста».
Обсуждают сегодня