Название: QThread
Отправлено: Firefox от Январь 18, 2013, 12:45
Здравствуйте.Подскажите пожалуйста, где у меня ошибка. создаю новый класс унаследованный от QThread и пытаюсь соединить сигнал в нем со слотом в основной программе, но по сигналу программа в слот не заходит. Подключаемый класс //.h #include <QThread> #include <QFile> #include <QDir> #include <QMessageBox> class Copy_sound :public QThread { Q_OBJECT public: Copy_sound(); ~Copy_sound(); QString dir; QString str_wt; QString str_wr; void run(); void copy_sound_konplex(QString direct,QString str_what, QString str_where);
protected: private: signals: void Signal_mess(QString); };
//.cpp #include "Copy_sound.h"
Copy_sound::Copy_sound() {
} Copy_sound::~Copy_sound() {
} void Copy_sound::run() { copy_sound_konplex(dir,str_wt, str_wr); } void Copy_sound::copy_sound_konplex(QString direct,QString str_what, QString str_where) { QFile ffp; QDir dirS(direct); QFile newfp(str_where); if(dirS.exists()==true) { if(newfp.exists()) newfp.remove(); ffp.copy(str_what,str_where); } else { emit Signal_mess(direct); direct.chop(direct.size()); } }
использование в главной программе //.h #ifndef A3_R_H #define A3_R_H
#include <QtGui/QWidget> #include "ui_a3_r.h" #include "Include/Structure.h" #include <QTextCodec> #include <QTextCursor> #include <QPrinter> #include <QTimer> #include <QProcess> #include <QFile> #include <QIODevice> #include <QMessageBox> #include <QDir> #include <QStringList> #include <QSound> #include "Include/xchangesystemclient.h" #include <QSettings> #include <QFileDialog> #include "windows.h" #include <QMainWindow> #include "Copy_sound.h" class A3_R : public QWidget { Q_OBJECT
public: A3_R(QWidget *parent = 0, Qt::WFlags flags =Qt::WindowMinimizeButtonHint); ~A3_R(); private: Copy_sound *cp_s; private slots: void Mess(QString ); }; #endif // A3_R_H
//.cpp A3_R::A3_R(QWidget *parent, Qt::WFlags flags) : QWidget(parent, flags) { cp_s= new Copy_sound; connect(cp_s,SIGNAL(cp_s->Signal_mess(QString)),this,SLOT(Mess(QString))); } void A3_R::Mess(QString direct) { QMessageBox::warning(0,"Warning","Sound file will not write on the computer wich ip address is "+direct); }
// использование в другой функции cp_s->dir=directory; cp_s->str_wr=file_name; cp_s->str_wt=thisFileName; cp_s->start();
Название: Re: QThread
Отправлено: Bepec от Январь 18, 2013, 13:07
connect(cp_s,SIGNAL(cp_s->Signal_mess(QString)),this,SLOT(Mess(QString))); connect(cp_s,SIGNAL(Signal_mess(QString)),this,SLOT(Mess(QString))); connect(cp_s,SIGNAL(Signal_mess(QString)),this,SLOT(Mess(QString)));
Название: Re: QThread
Отправлено: Firefox от Январь 22, 2013, 15:32
спасибо большое все заработало :D
|