Установка общего родительского виджета Qt для нового виджета в отдельном потоке

0

Мне нужно создать виджет в отдельном потоке и установить MainWindow для него как родительский виджет. Невозможно избежать создания потока.

В конструкторе нового виджета я указываю указатель на MainWindow, но даю

QObject :: setParent: невозможно установить родительский элемент, новый родитель находится в другом потоке

Как это решить?

PS Детские виджеты могут быть многочисленными.

  • 0
    Да, я так думаю. Я постараюсь создавать виджеты в общей теме. Проблема в том, как это сделать, потому что я должен использовать специальный каркас, и эти виджеты должны быть расширениями для основного интерфейса. Но это еще одна проблема :)
Теги:
multithreading
qt
qobject
qtcore

2 ответа

2
Лучший ответ

Это невозможно. Для получения дополнительной информации см. Следующую ссылку на код:

Исходный код QObject

В частности, вам следует обратить внимание на это предупреждение:

"qWarning (" QObject :: setParent: не может установить родительский, новый родительский элемент в другом потоке ");

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

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

Невозможно избежать создания потока. Как это решить?

Я боюсь, что вам нужно будет реорганизовать код, переместив это из потока в то же самое, где родитель или/и не имеет отдельного потока вообще.

На основе информации в вашем вопросе, в настоящее время, невозможно сказать больше, так как мы еще не полностью знаем функциональность вашего другого потока.

Надеюсь, это поможет объяснить это.

3

Вы не можете создавать виджеты пользовательского интерфейса вне основного потока

  • 0
    Строго говоря, это не правильно. Вы могли бы создать это. Основным критерием является наличие его в одной теме. Не обязательно ли это главное.
  • 0
    Только что протестировал создание QWidget в отдельном потоке и получил ошибку времени выполнения (Qt 5.1)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню