Просмотр сообщений
|
Страниц: [1] 2
|
1
|
Qt / Вопросы новичков / QDockWidget QMdi
|
: Август 13, 2021, 09:49
|
Подскажите, как можно сделать подобное окно MDI с возможностью перетаскивания подокон и автоматическим выравниванием. Пробовал QDockWidget, но получились ограничения на количество окон по вертикали или горизонтали. Хотелось бы накидывать окна в общее окно и чтобы они пристыковывались к границам окна и к границам друг друга с возможностью перетаскивания и ресайзинга мышкой.
|
|
|
4
|
Qt / Вопросы новичков / Re: QSerialPort
|
: Февраль 11, 2016, 05:36
|
Да, Вы правы. Да и я не верил (поторопился с вопросом). Проверил в асинхронном режиме, причина была в устройстве, с которым общался. После операции "запрос-ответ" оно выдавало с некоторой задержкой пару-тройку копий последнего ответа, не разделенных по-времени. Ввиду того, что режим был синхронный изменение таймаутов (между пакетами и между байтами в пакетах) меняло картину. При очистке буферов эти старые пакеты удаляются и не влияют на результат. Спасибо за поддержку!
|
|
|
5
|
Qt / Вопросы новичков / Re: QSerialPort
|
: Февраль 09, 2016, 08:06
|
Вопрос решился. Да, Эти функции работают нормально. Проблема была в другом. Не буду описывать этапы решения, но отмечу главный вывод. Думаю, многим пригодится. Повторю, работал с портом синхронно. При получении ответа из порта, часто приходили лишние пакеты (скорее, оставшиеся от предыдущих посылок) и даже не в одном экземпляре. Решилось очисткой буферов перед записью в порт. serial->clear(QSerialPort::AllDirections); // без этого работает некорректно. serial->write(outData); if (serialMei->waitForReadyRead(timeout)) { inData = serial->readAll(); while (serial->waitForReadyRead(20)) inData += serial->readAll(); } else // Read TimeOut Читал, что readAll() всё выбирает. Оказывается не всегда очищает за собой. Как прокомментирует разработчик QSerialPorta ?
|
|
|
6
|
Qt / Вопросы новичков / QSerialPort
|
: Февраль 03, 2016, 08:42
|
Пытаюсь обмениваться синхронно с com-портом по примеру из Qt blockingmaster. Такое впечатление. что waitForBytesWritten не работает (выходит по таймауту). Читал, что раньше были проблемы с этими функциями. Как сейчас обстоят дела ?
if (serial.waitForBytesWritten(Timeout)) { if (serial.waitForReadyRead(Timeout)) { Data = serial.readAll(); while (serial.waitForReadyRead(10)) Data += serial.readAll(); . . .
|
|
|
7
|
Qt / OpenGL / QGLWidget QPainter Размер точки
|
: Январь 22, 2016, 06:42
|
Выводим точку функцией drawPoint(). setPen(QPen(QColor(255,255,255),1)); 1. QPainter в QGLWidget. Ширина точки получается 2. Высота 1. 2. QPainter в QWidget. Ширина точки получается 1. Высота 1.
Проблему обнаружил при написании своей программы сглаживания для drawline, которое не работает стандартно в случае 1.
Почему так ? Как поправить ? Qt5.1 Windows 7
|
|
|
10
|
Qt / Вопросы новичков / Re: QSerialPort Unknown Error
|
: Июнь 30, 2015, 12:57
|
подробную расшифровку Unknown Error (11) Эмм.. Я же говорю, что нужно самому пересобрать QtSerialPort и втыкнуть qDebug() в decodeSystemError(). А что, QSerialPort::errorString() пустая? errorString() = "Unknown Error". Я надеялся, что будет более полная расшифровка ошибки, но думаю это невозможно, или точнее, даже не нужно. Если идут просто электрические помехи, возможно, перебиваются все служебные сигналы, какой смысл уточнять.
|
|
|
13
|
Qt / Вопросы новичков / Re: QSerialPort Unknown Error
|
: Июнь 30, 2015, 11:56
|
Причина. похоже, найдена. Кабель связи по 2-м каналам RS422 представляет из себя единый жгут, в котором происходят взаимные наводки каналов. При работе одного канала всё было нормально. При работе двух - в обоих появлялась ошибка QSerialPorta Unknown Error (11). Длина кабеля невелика, но, думаю > 5м. Зато скорость 115200 кб/с. Для 100%-й уверенностти надо посмотреть осциллографом (пока нет возможности), но других вариантов не вижу. Изначально надеялся на более подробную расшифровку Unknown Error (11), потому и задал вопрос. Спасибо всем за советы.
|
|
|
14
|
Qt / Вопросы новичков / Re: QSerialPort Unknown Error
|
: Июнь 29, 2015, 11:56
|
Попробуй дрова обновить.
Проясняются некоторый факты. На ПК 2 канала RS422 соединены кабелем параллельно с 2-мя каналами RS422 на ноутбуке. Запускаю общение по одному каналу - всё нормально. Запускаю по 2-му - на ноутбуке ошибка Unknuwn Error 11 по обоим каналам. На ноутбуке оба канала на одном разъёме. Подозрение на взаимное влияние каналов. Пока жду логов тестовой программы. На ПК работает ДОС.
|
|
|
|
|