Ведь если мы используем сигналы, то получается надо будет использовать в потоке
т.е обработку очереди сообщений так???
так.
А читать типа:
C++ (Qt)
void Thread::run(){
for(;;){
...
QByteArray ba = port->readAll();
...
}
}
Или это не правильно???
Неправильно. port у вас создан в другом потоке, и использовать в run его не имеете права:
Note: The serial port is always opened with exclusive access (that is, no other process or thread can access an already opened serial port).
Так что либо создавайте порт в run (без привязки объекта к предку this), либо создавайте какой-нибудь объект в run, а его слот соединяйте с readyread. Полученные данные можно передать сигналом куда угодно.
И помните правила:
1) слот должен быть объявлен в объекте, который создается в том потоке, куда вы хотите передать данные. Сигнал может испускаться откуда угодно;
2) когда создаете объект в методе QThread::run, не указывайте для него предка this. Сам объект QTread создается в другом (чаще всего, в основном) потоке;
3) там, где находится слот, должна быть запущена обработка событий (exec).