Qt 5.12 время от времени SIGSEGV при вызове C ++ из Qml

Используйте line-height:30px для диапазона, чтобы текст совпадал с изображением:

<div>
  <img style="width:30px; height:30px;">
  <span style="line-height:30px;">Doesn't work.</span>
</div>
2
задан Dmitry 16 January 2019 в 16:31
поделиться

1 ответ

Вот официальный ответ от Qt-JIRA:

«Вы получаете доступ к своим m_connectionParams из двух разных потоков без блокировки. Основной поток записывает его в connectToEmulatorService (), а рабочий поток читает его в connectToEmulatorServiceImpl (). Если основной поток записывает снова, в то время как рабочий поток только читает предыдущую итерацию, вы получаете сбой. Это наиболее очевидная проблема.

Однако, даже если вы заблокировали мьютекс для доступа для m_connectionParams, это все равно будет небезопасно. Вариант, который у вас есть, это внутренне QJSValue. Чтобы преобразовать это в карту, мы должны вызвать глубоко в движке JavaScript, создать области и взаимодействовать с кучей JavaScript. любой другой JavaScript выполняется одновременно в другом потоке, у вас проблемы.

Просто извлеките QVariantMap из основного потока и передайте его вашему функтору в качестве параметра. "

Итак, иметь копию QVariant недостаточно ... это где-то глубоко внутри источников Qt.

0
ответ дан Dmitry 16 January 2019 в 16:31
поделиться
Другие вопросы по тегам:

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