Russian Qt Forum

Qt => Общие вопросы => Тема начата: Vamireh от Апрель 19, 2013, 00:19



Название: QSerialPort не шлет readyRead во время ресайза окна или его перемещения
Отправлено: Vamireh от Апрель 19, 2013, 00:19
При ресайзе окна QSerialPort перестает слать readyRead. При этом буфер накапливается до какого-то предела, и если двигать окно 1-2 сек, то он переполняется и обнуляется. Гугл ничего не дал.

То есть в классе диалога мой класс, в котором экземпляр QSerialPort и его readyRead связан с методом диалога, который, если кратко, отображает данные. Так вот во время манипуляций с идалогом данные не отображаются


Название: Re: QSerialPort не шлет readyRead во время ресайза окна или его перемещения
Отправлено: Bepec от Апрель 19, 2013, 07:24
Я вам по секрету скажу, что если у вас всё происходит в одном потоке, то движение окна заставляет программу "застыть", а данные соответственно будут накапливаться.

Это фишка винды как операционной системы. Перенесите  работу с портом в другой поток и всё должно заработать ;)


Название: Re: QSerialPort не шлет readyRead во время ресайза окна или его перемещения
Отправлено: kuzulis от Апрель 19, 2013, 10:33
Да. Верес прав :)

В будущем, для Qt5 реализации планируется заменить нотификаторы типа QWinEventNotifier на QWinOverlappedNotifier (или как там оно в Qt5 называется).
Тогда в принципе проблема может решиться. Но это не скоро будет и только для Qt5.


Название: Re: QSerialPort не шлет readyRead во время ресайза окна или его перемещения
Отправлено: Vamireh от Апрель 19, 2013, 19:43
Я вам по секрету скажу, что если у вас всё происходит в одном потоке, то движение окна заставляет программу "застыть", а данные соответственно будут накапливаться.

Это фишка винды как операционной системы. Перенесите  работу с портом в другой поток и всё должно заработать ;)

Что-то об этом не подумал. Хотя мне казалось, что раньше работало, прогрессбар обновлялся во всяком случае, хотя не помню насчет потоков, как я там сделал. В понедельник попробую, спасибо.