Название: 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 Я вам по секрету скажу, что если у вас всё происходит в одном потоке, то движение окна заставляет программу "застыть", а данные соответственно будут накапливаться. Это фишка винды как операционной системы. Перенесите работу с портом в другой поток и всё должно заработать ;) Что-то об этом не подумал. Хотя мне казалось, что раньше работало, прогрессбар обновлялся во всяком случае, хотя не помню насчет потоков, как я там сделал. В понедельник попробую, спасибо. |