Russian Qt Forum
Ноябрь 23, 2024, 23:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QThread  (Прочитано 2005 раз)
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();
Записан
Bepec
Гость
« Ответ #1 : Январь 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)));
Записан
Firefox
Гость
« Ответ #2 : Январь 22, 2013, 15:32 »

спасибо большое все заработало Веселый
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.216 секунд. Запросов: 20.