Название: Не могу вывести текст в QPlainTextEdit (QTextEdit) Отправлено: chital от Сентябрь 25, 2012, 14:50 Создаю QPlainTextEdit динамически в одном методе, в другом методе пытаюсь задать текст. Прграмма виснет на
QPlainTextEdir::setPlainText(QString); Cоздание: Код: QPlainTextEdit *vNewText = new QPlainTextEdit(); Код: QPlainTextEdit *vMemo = dynamic_cast<QPlainTextEdit*>(vInfo.widget); Код: QT += core gui Название: Re: Не могу вывести текст в QPlainTextEdit (QTextEdit) Отправлено: mutineer от Сентябрь 25, 2012, 14:51 Вставка текста происходит не в endEditing(), случаем?
Название: Re: Не могу вывести текст в QPlainTextEdit (QTextEdit) Отправлено: chital от Сентябрь 25, 2012, 15:11 Нашел ошибку. У меня класс widget был сделан потокобезопасным, чтобы в него можно было отправлять сигналы из других потоков. На все вызовы методов и слотов повесил мьютекс. В результате setPlainText вызывает сигнал endEditing.
Так как поток widget-ов один (главный), а сигналы от дочерних widget-ов подключены синхронно, происходит блокировка мьютекса. Для решения данной проблемы необходимо подключать сигналы ассинхронно с помощью очереди: Код: connect(vNewText,SIGNAL(textChanged()),this,SLOT(endEditing()),Qt::QueuedConnection); проблема решена. |