22 июля 2019 г. 4:08

Если приложение бежит в и другом потоке нежели поток QML

qt, QML C++

Всем привет.
Столкнулся с такой проблемой при переходи в приложении с quick1 на quick2
QQmlEngine: Illegal attempt to connect to TestApp(0x5572a66ddbe0) that is in a different thread than the QML engine QQmlEngine(0x5572a672b900.

Может кто знает правится ли это или что то в приложении нехватает еще?
Спасибо.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
13

Привет.

Трудно точно сказать, что именно вызывает ошибку. Там нет объектов, которые пересылаются по потокам? Например QTimer?

Пока ответить не могу. Знаю что приложуха в другом потоке бежит.
Нашел пока в исходниках Qt от куда прилетает ошибка
Qt на 131 строке. Другой инфы пока не накопал.

Раньше использовался QtDeclarative и вот такое ощущение что это как то этого касается.
Еще нашел гитовый мердж для этого класса QtDeclarative

  • 22 июля 2019 г. 5:04
  • (ред.)

В общем есть клиент который бежит не в том потоке что сама аппликация. В это проблема. Теперь понять как это исправить(

Нету никаких мыслей на сей счет?)

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

Ну проблема именно в переходе с 1 на 2 quick. Они воткнули проверку. Это то что я писал про 131 строку в коде.

То есть проблема не в том, что у вас там код написан как попало, а то, что Qt, по-вашему, неправильно что-то написали?

Ну кинь им реквест на багтрекер.

Вот только что нашел в инете, у человека такая же ошибка. Вроде бы таже самая проблема
https://stackoverflow.com/questions/37633709/how-to-create-qtquick-window-outside-the-main-thread

Скорее всего в коде не правильно потоки используются.Вот на форуме пишут кое что интересное

Да вот нашел тоже инфу. Эти ... хорошие люди из за того что решили отказатся от обычных шариков они во втором quick2 впилили проверку что я выше и указал, типа теперь в разных потоках нельзя так делать как было раньше. В общем похерили. В 5.7 еще работало а потом они порешали и вот ...

Полагаю, что с их стороны это было оправданным решением, учитывая, что QML поддерживает многопоточность. Видимо из-за этого придётся искать или иной способ использования shared_ptr или отказываться от них. Ничего не поделаешь...

Советую использовать нечто такое или такое

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

AS
13 декабря 2019 г. 6:05
Aruzhan Seraliyeva

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
AS
13 декабря 2019 г. 5:47
Aruzhan Seraliyeva

C++ - Тест 001. Первая программа и типы данных

  • Результат:40баллов,
  • Очки рейтинга-8
Т
11 декабря 2019 г. 16:56
Тома

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
Последние комментарии
9 декабря 2019 г. 3:41
Евгений Легоцкой

Эта ошибка invalid use of incomplete type ‘class Ui::AnotherWindow’ обычно говорит о том, что не найдено определение класса или структуры. Типичная проблема - не подключён заголовочны…
НБ
9 декабря 2019 г. 3:36
Николай Батманов

Ну, не настолько со мной всё полхо...))) Вроде бы. Я ж кнопки отрисовываю.
9 декабря 2019 г. 3:14
Евгений Легоцкой

Добрый день. У вас ui файлов по ходу нет. UI файлы используются для вёрстки в графическом дизайнере.
НБ
9 декабря 2019 г. 3:05
Николай Батманов

Здравствуйте! Полностью скопировал ваш пример к себе, чтобы разобраться. А он не хочет запускаться, дает ошибку: invalid use of incomplete type ‘class Ui::AnotherWindow’ ui(new Ui…
8 декабря 2019 г. 7:23
Евгений Легоцкой

У меня здесь есть одна старая статья с примером векторного редактора. Там есть ответы на ваши вопросы. Поизучайте Qt/C++ - Урок 072. Пример векторного редактора на Qt QGraphicsItem, QG…
Сейчас обсуждают на форуме
t
13 декабря 2019 г. 17:17
tantrido

Всё работает, при чём тут колхоз?! ;) https://doc.qt.io/qt-5/qtqml-cppintegration-data.html Если что-то не работает - вопрос к собственным рукам и знаниям. Вопрос не корректен - мож…
13 декабря 2019 г. 10:16
Руслан Волшебник

Да, я посмотрел, вы абсолютно правы. Единственное, если я правильно понял, если срабатывает условие if (aggregates["max_id"] - aggregates["min_id"]) + 1 == aggregates["count"]: return sel…
t
13 декабря 2019 г. 9:53
tantrido

Ответ >>
13 декабря 2019 г. 8:39
Александр Панюшкин

Вроде да. Только там начинаются вопросы с тем, чтобы виджет бы в фокусе, чтобы до виджета это событие долетало.
ДК
13 декабря 2019 г. 7:48
Джон Кофи

Привет. Есть класс "ждун", который используется на разных виджетах: class WaiterDialog;#define WAITER_DIALOG Singleton<WaiterDialog>::instance()class WaiterDialog : public QObject, …
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB