Название: signal slot, widget->show() Отправлено: UVV от Декабрь 29, 2009, 15:28 Есть свясь сигнала со слотом, слот находится в MainWidow, а сигнал эмитится из paintEvent() одного из виджетов.
Слот: Код: void MainWindow::displayErrorMessage(const QString message) errorLogView - это QPlainTextEdit. Сигнал эмитится из разных методов внутри paintEvent(), но иногда происходит следующее, PlainTextEdit промелькивает, т.е. появляется и исчезает. В какую сторону смотреть? Кто-нибудь сталкивался с подобным? Название: Re: signal slot, widget->show() Отправлено: Igors от Декабрь 29, 2009, 15:57 Сигнал эмитится из разных методов внутри paintEvent(), но иногда происходит следующее, PlainTextEdit промелькивает, т.е. появляется и исчезает. Не сталкивался, но по смыслу сигналы из paintEvent (если уж без них никак нельзя обойтись) должны помещаться в очередь (т.е. connect должен создаваться с QueuedConnection)В какую сторону смотреть? Кто-нибудь сталкивался с подобным? Название: Re: signal slot, widget->show() Отправлено: UVV от Декабрь 29, 2009, 16:04 Я пробовал и так и так, результат один и тот же ))
Название: Re: signal slot, widget->show() Отправлено: Dendy от Декабрь 29, 2009, 17:35 Попробуйте складывать сообщения в одно, а лучше - немного переделать слот:
Код
Название: Re: signal slot, widget->show() Отправлено: UVV от Декабрь 29, 2009, 18:17 Цитировать ...(const QString & message) <= reference to QString, not QString А это принципиально?Просто я собирался использовать QueuedConnection. Насколько я понял из руководства, слот будет обрабатываться последним в очереди, а в это время reference может быть уже не действительным. Название: Re: signal slot, widget->show() Отправлено: Dendy от Декабрь 29, 2009, 18:51 Хорошая практика рекомендует использовать константные ссылки на shared-классы вместо значений, чтобы избежать ненужного инкремента/декремента счётчика ссылок. Все значения, что обрабатываются не синхронно (QueuedConnection) ложатся в QVariant, который сам вызывает копирующий конструктор, автоматически увеличивая счётчик ссылок.
Название: Re: signal slot, widget->show() Отправлено: Igors от Декабрь 29, 2009, 22:14 Цитировать ...(const QString & message) <= reference to QString, not QString А это принципиально?Просто я собирался использовать QueuedConnection. Насколько я понял из руководства, слот будет обрабатываться последним в очереди, а в это время reference может быть уже не действительным. |