Добрый день. 
Такая вот задачка, сперва опишу проблему, ниже прикреплю код. Есть библиотека работающая с serial port(/dev/ttyS0), и пример к ней, все работает идеально, данные выводит в консоль. Но задача состоит в том что бы данные выводились в окно. Почитал документацию по сигналам и слотам... разбираюсь, но пока что безуспешно.
вот код:
main.cpp
C++ (Qt)
 
#include <iostream>
#include <QtCore/QCoreApplication>
#include <QThread>
#include <QString>
#include <QStringList>
#include <QDebug>
#include <QSerialPort>
#include "host.h"
 
void printHelp()
{
  std::cout << "Usage: echo_eventmode [--help] [--port=<serial port>] [--set=<port settings>]" << std::endl;
  std::cout << std::endl;
#if defined(Q_OS_WIN)
  std::cout << "Example: echo_eventmode --port=COM3 --set=9600,8,N,1" << std::endl;
#else
  std::cout << "Example: echo_eventmode --port=/dev/ttyS0 --set=9600,8,N,1" << std::endl;
#endif
}
 
bool processArgs(const QStringList &args, QString &serPort, QString &settings)
{
  QHash<QString, QString> argPairs;
 
  foreach( QString ar, args ) {
    if ( ar.split('=').size() == 2 ) {
      argPairs.insert(ar.split('=').at(0), ar.split('=').at(1));
    }
    else {
      if ( ar == "--help" )
        goto LPrintHelpAndExit;
    }
  }
 
  settings = argPairs.value("--set", "9600,8,n,1");
#if defined(Q_OS_WIN)
  serPort = argPairs.value("--port", "COM3");
#else
  serPort = argPairs.value("--port", "/dev/ttyS0");
#endif
 
  return true;
 
LPrintHelpAndExit:
  printHelp();
  return false;
}
 
int main(int argc, char *argv[])
{
  using TNX::QSerialPort;
 
  QCoreApplication a(argc, argv);
 
  std::cout << "Serial port echo example with event-driven model, Copyright (c) 2010 Inbiza Systems Inc." << std::endl;
  std::cout << "Created by Inbiza Labs <labs@inbiza.com>" << std::endl;
  std::cout << std::endl;
  std::cout << "Main thread id: " << QThread::currentThreadId() << std::endl;
 
  QString portName;
  QString settings;
 
  if ( !processArgs(a.arguments(), portName, settings) )
    return 0;
 
  QSerialPort serport(portName, settings);
  if ( !serport.open() )
    qFatal("Cannot open serial port %s. Exiting..", qPrintable(portName));
 
  Host host(serport);
 
  return a.exec();
}
 
host.cpp
C++ (Qt)
#include <iostream>
#include <QtCore/QCoreApplication>
#include <QThread>
#include <QSerialPort>
#include <QTimerEvent>
#include <QDateTime>
#include "host.h"
 
Host::Host(TNX::QSerialPort &serPort, QObject *parent)
  : QObject(parent), serialPort_(serPort), timerId_(0), byteCounter_(0)
{
  using TNX::QSerialPort;
 
  timerId_ = startTimer(5000);
  connect(&serialPort_, SIGNAL(readyRead()), SLOT(onDataReceived()));
 
  if ( !serialPort_.setCommTimeouts(QSerialPort::CtScheme_NonBlockingRead) )
    qWarning("Cannot set communications timeout values at port %s.", qPrintable(serialPort_.portName()));
}
 
Host::~Host()
{
}
 
void Host::onDataReceived()
{
  if ( timerId_ )
    killTimer(timerId_);
 
  QByteArray data = serialPort_.read(512);
  byteCounter_ += data.size();
 
  std::cout << "Thread id: " << QThread::currentThreadId() << " Received data @ " <<
      qPrintable(QDateTime::currentDateTime().toString("hh:mm:ss.zzz")) << ". Echo back." << std::endl;
  serialPort_.write(data);
 
  if ( byteCounter_ >= 4096 ) {
    std::cout << "Event-Driven example is terminated successfully." << std::endl;
    qApp->exit(0);
  }
 
  // create a wait timer for the next packet
  timerId_ = startTimer(5000); // 5sec
}
 
void Host::timerEvent(QTimerEvent *event)
{
  Q_ASSERT(timerId_ == event->timerId());
 
  killTimer(event->timerId());
  timerId_ = 0;
 
  std::cout << "Timeout occurred." << std::endl;
}
 
 
host.h
C++ (Qt)
#ifndef HOST_H__
#define HOST_H__
 
#include <QObject>
 
class QTimerEvent;
 
namespace TNX { class QSerialPort; }
 
class Host : public QObject
{
Q_OBJECT
 
public:
  Host(TNX::QSerialPort &serPort, QObject *parent = 0);
  ~Host();
 
protected:
  virtual void timerEvent(QTimerEvent *event);
 
private slots:
  void onDataReceived();
 
private:
  TNX::QSerialPort &serialPort_;
  int timerId_;
  int byteCounter_;
};
 
#endif // HOST_H__
 
открываю проект в qt creator добавляю класс формы qr desinger mainwindow ... есть ui форма... добавляю виджеты... все работает кроме .... того что я не могу графику связать с программой, не могу передать переменную из ф-и void Host::onDataReceived() в ф-ю... работающую с гуи окном в класе mainwindow