Hehe, schon verstanden
Ich weiß, dass das unsinnig erscheint, aber ich wollte es eigentilch nur zum testen benutzen, da ich später den Thread dazu verwenden will um z.B. eine Datei zu kopieren und zurückgeben will, wieviel schon kopiert wurde...
Hier mal das was ich zum laufen gebracht habe:
(es heißt nur ftp, hat aber damit nix zu tun, ich weiß dass ftp asynchron ist)
mainwindow.h
Code: Alles auswählen
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QTextEdit *editor;
FTPThread thread1;
private slots:
void startThread();
void Threadredy();
public:
MainWindow(QMainWindow *parent = 0, Qt::WindowFlags = 0);
};
mainwindow.cpp
Code: Alles auswählen
MainWindow::MainWindow(QMainWindow *parent, Qt::WindowFlags flags) : QMainWindow(parent,flags)
{
qDebug("Konstruktor");
editor = new QTextEdit(this);
resize(600,500);
editor->setGeometry(100,100,300,200);
setWindowTitle("FFFUU");
startThread();
}
void MainWindow::startThread()
{
if (thread1.isRunning()) return;
thread1.SetValues(0,20);
editor->insertPlainText("Thread start");
qDebug("Thread Started");
connect(&thread1,SIGNAL(finished()),this,SLOT(Threadredy()));
thread1.start();
}
void MainWindow::Threadredy()
{
qDebug("Thread finished");
}
ftp.h
Code: Alles auswählen
class FTPThread : public QThread
{
private:
int qmin, qmax;
int zahl;
public:
FTPThread();
void SetValues(int min, int max);
protected:
void run();
};
ftp.cpp
Code: Alles auswählen
FTPThread::FTPThread()
{
qmin = 0;
qmax = 0;
}
void FTPThread::SetValues(int min, int max)
{
qmin = min;
qmax = max;
}
void FTPThread::run()
{
for(int i = 0; i < qmax; i++)
{
qDebug("count");
}
}
Das funktioniert soweit und die Debugmeldung lasse ich in der Konsole ausgeben.
Jetzt dachte ich mir erstelle ich einfach im Thread eine Methode oder Singal und rufe es in der for-schleife auf um es mit einem Slot den ich im MainWindow erstelle zu verbinden.
Dann stelle ich fest, wenn ich connect() benutze wird das singal nicht gelistet. Nun stehe ich auf dem Schlauch.
Soweit ich herausgefunden habe, hat es damit zu tun, dass dieser EventLoop im Mainwindow läuft und ich deshalb nicht mit einem Thread welcher seperat läuft verbinden kann? (habe da so meine Zweifel

)
Gehe ich das ganze falsch an?