头文件
#ifndef __RECEIVEMOVIETHREAD_H__
#define __RECEIVEMOVIETHREAD_H__
#include "StartCS.h"
#include <qthread.h>
#include <qwidget.h>
#include <qlineedit.h>
#include <qtextview.h>
#include <qsocket.h>
class ReceiveMovieThread: public QThread, public QWidget
{
Q_OBJECT
public:
ReceiveMovieThread(QWidget *parent, QLineEdit *LEip, QLineEdit *LEport, QTextView *TVinfo, MovieQueue *MQque);
virtual void run();
private:
MovieQueue *queueR;
QLineEdit *ip;
QLineEdit *port;
QTextView *information;
QSocket *socketMovie;
public slots:
void connectToServer();
void closeConnection();
void sendToServer();
private slots:
void socketReadyRead();
void socketConnectionClosed();
void socketClosed();
void socketConnected();
void socketError(int);
void socketHostFound();
};
#endif
定义文件
#include "ReceiveMovieThread.h"
#include "stdio.h"
ReceiveMovieThread::ReceiveMovieThread(QWidget *parent, QLineEdit *LEip, QLineEdit *LEport, QTextView *TVinfo, MovieQueue *MQque):QWidget(parent)
{
queueR = MQque;
ip = LEip;
port = LEport;
information = TVinfo;
socketMovie = new QSocket(this);
}
//connect to the server with the ip and the port
void ReceiveMovieThread::connectToServer()
{
socketMovie->connectToHost(ip->text(), (port->text()).toInt());
information->append(tr("Connect to the " + ip->text() + "...\n"));
}
//close the socket witch has connected
void ReceiveMovieThread::closeConnection()
{
socketMovie->close();
if(QSocket::Closing == socketMovie->state())
{
//if the socket is closing now, we should wait for closed state
connect(socketMovie, SIGNAL(delayedCloseFinished()), SLOT(socketClosed()));
}
else
{
socketClosed();
}
}
//send data to the server
void ReceiveMovieThread::sendToServer()
{
}
//have data from the server
void ReceiveMovieThread::socketReadyRead()
{
information->append(tr("There is a note\n"));
}
//socket closed
void ReceiveMovieThread::socketClosed()
{
information->append(tr("Connection closed\n"));
}
//socket closed by the server
void ReceiveMovieThread::socketConnectionClosed()
{
information->append(tr("Connection closed by the server\n"));
}
//find the host
void ReceiveMovieThread::socketHostFound()
{
information->append(tr("Find the host" + ip->text() + "\n"));
}
//connected to the server
void ReceiveMovieThread::socketConnected()
{
information->append(tr("Connected to the " + ip->text() + "ok!\n"));
}
//error operation
void ReceiveMovieThread::socketError(int err)
{
if(err == QSocket::ErrConnectionRefused)
{
information->append(tr("Connect closed by server\n"));
}
else if(err == QSocket::ErrHostNotFound)
{
information->append(tr("Host Not Found\n"));
}
else if(err == QSocket::ErrSocketRead)
{
information->append(tr("Socket Read Error\n"));
}
}
void ReceiveMovieThread::run()
{
while(true)
{
printf("ReceiveMovieThread\n");
}
}
生成的MOC文件
/****************************************************************************
** ReceiveMovieThread meta object code from reading C++ file 'ReceiveMovieThread.h'
**
** Created: Wed Aug 12 04:37:13 2009
** by: The Qt MOC ($Id: qt/src/moc/moc.y 2.3.2 edited 2001-10-17 $)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#if !defined(Q_MOC_OUTPUT_REVISION)
#define Q_MOC_OUTPUT_REVISION 9
#elif Q_MOC_OUTPUT_REVISION != 9
#error "Moc format conflict - please regenerate all moc files"
#endif
#include "ReceiveMovieThread.h"
#include <qmetaobject.h>
#include <qapplication.h>
const char *ReceiveMovieThread::className() const
{
return "ReceiveMovieThread";
}
QMetaObject *ReceiveMovieThread::metaObj = 0;
void ReceiveMovieThread::initMetaObject()
{
if ( metaObj )
return;
if ( qstrcmp(QThread::className(), "QThread") != 0 ) ///////////////////////////33行
badSuperclassWarning("ReceiveMovieThread","QThread");
(void) staticMetaObject();
}
#ifndef QT_NO_TRANSLATION
QString ReceiveMovieThread::tr(const char* s)
{
return qApp->translate( "ReceiveMovieThread", s, 0 );
}
QString ReceiveMovieThread::tr(const char* s, const char * c)
{
return qApp->translate( "ReceiveMovieThread", s, c );
}
#endif // QT_NO_TRANSLATION
QMetaObject* ReceiveMovieThread::staticMetaObject()
{
if ( metaObj )
return metaObj;
(void) QThread::staticMetaObject();///////////////////////////56行
#ifndef QT_NO_PROPERTIES
#endif // QT_NO_PROPERTIES
typedef void (ReceiveMovieThread::*m1_t0)();
typedef void (QObject::*om1_t0)();
typedef void (ReceiveMovieThread::*m1_t1)();
typedef void (QObject::*om1_t1)();
typedef void (ReceiveMovieThread::*m1_t2)();
typedef void (QObject::*om1_t2)();
typedef void (ReceiveMovieThread::*m1_t3)();
typedef void (QObject::*om1_t3)();
typedef void (ReceiveMovieThread::*m1_t4)();
typedef void (QObject::*om1_t4)();
typedef void (ReceiveMovieThread::*m1_t5)();
typedef void (QObject::*om1_t5)();
typedef void (ReceiveMovieThread::*m1_t6)();
typedef void (QObject::*om1_t6)();
typedef void (ReceiveMovieThread::*m1_t7)(int);
typedef void (QObject::*om1_t7)(int);
typedef void (ReceiveMovieThread::*m1_t8)();
typedef void (QObject::*om1_t8)();
m1_t0 v1_0 = &ReceiveMovieThread::connectToServer;
om1_t0 ov1_0 = (om1_t0)v1_0;
m1_t1 v1_1 = &ReceiveMovieThread::closeConnection;
om1_t1 ov1_1 = (om1_t1)v1_1;
m1_t2 v1_2 = &ReceiveMovieThread::sendToServer;
om1_t2 ov1_2 = (om1_t2)v1_2;
m1_t3 v1_3 = &ReceiveMovieThread::socketReadyRead;
om1_t3 ov1_3 = (om1_t3)v1_3;
m1_t4 v1_4 = &ReceiveMovieThread::socketConnectionClosed;
om1_t4 ov1_4 = (om1_t4)v1_4;
m1_t5 v1_5 = &ReceiveMovieThread::socketClosed;
om1_t5 ov1_5 = (om1_t5)v1_5;
m1_t6 v1_6 = &ReceiveMovieThread::socketConnected;
om1_t6 ov1_6 = (om1_t6)v1_6;
m1_t7 v1_7 = &ReceiveMovieThread::socketError;
om1_t7 ov1_7 = (om1_t7)v1_7;
m1_t8 v1_8 = &ReceiveMovieThread::socketHostFound;
om1_t8 ov1_8 = (om1_t8)v1_8;
QMetaData *slot_tbl = QMetaObject::new_metadata(9);
QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(9);
slot_tbl[0].name = "connectToServer()";
slot_tbl[0].ptr = (QMember)ov1_0;
slot_tbl_access[0] = QMetaData::Public;
slot_tbl[1].name = "closeConnection()";
slot_tbl[1].ptr = (QMember)ov1_1;
slot_tbl_access[1] = QMetaData::Public;
slot_tbl[2].name = "sendToServer()";
slot_tbl[2].ptr = (QMember)ov1_2;
slot_tbl_access[2] = QMetaData::Public;
slot_tbl[3].name = "socketReadyRead()";
slot_tbl[3].ptr = (QMember)ov1_3;
slot_tbl_access[3] = QMetaData::Private;
slot_tbl[4].name = "socketConnectionClosed()";
slot_tbl[4].ptr = (QMember)ov1_4;
slot_tbl_access[4] = QMetaData::Private;
slot_tbl[5].name = "socketClosed()";
slot_tbl[5].ptr = (QMember)ov1_5;
slot_tbl_access[5] = QMetaData::Private;
slot_tbl[6].name = "socketConnected()";
slot_tbl[6].ptr = (QMember)ov1_6;
slot_tbl_access[6] = QMetaData::Private;
slot_tbl[7].name = "socketError(int)";
slot_tbl[7].ptr = (QMember)ov1_7;
slot_tbl_access[7] = QMetaData::Private;
slot_tbl[8].name = "socketHostFound()";
slot_tbl[8].ptr = (QMember)ov1_8;
slot_tbl_access[8] = QMetaData::Private;
metaObj = QMetaObject::new_metaobject(
"ReceiveMovieThread", "QThread",
slot_tbl, 9,
0, 0,
#ifndef QT_NO_PROPERTIES
0, 0,
0, 0,
#endif // QT_NO_PROPERTIES
0, 0 );
metaObj->set_slot_access( slot_tbl_access );
#ifndef QT_NO_PROPERTIES
#endif // QT_NO_PROPERTIES
return metaObj;
}
附件在下面希望高手帮我看一下