Seite 1 von 1

QThread

Verfasst: 10. Oktober 2007 16:00
von qtprogram
Hi Hi,

ich versuche mich grade an QThread und bekomm eine merkwürdige Fehlermeldung:

MainWidget.cpp:304: error: request for member ‘run’ in ‘((MainWidget*)this)->MainWidget::thread’, which is of non-class type ‘QThread*’


Mein Code sieht folgendermaßen aus:
Thread.cpp:

Code: Alles auswählen

#include<QThread>
#include<iostream>

#include<Thread.h>
#include<MainWidget.h>



Thread::Thread(QObject *parent) : QThread(parent)

{
	stopped= false;
}

void Thread::run()
{
	while(!stopped)
		std::cout<< "hallo"<< std::endl;

}
//das hallo ist nur als Test, ob denn funktioniert
void Thread::stop()
{
	stopped = true;
}
Thread.h sieht so aus:

Code: Alles auswählen

#ifndef THREAD_H
#define THREAD_H

#include<QThread>

class Thread : public QThread 
{
Q_OBJECT
			
public:
	Thread (QObject *parent=0);
	void stop();

private:
	bool stopped;

protected:
	void run();
};
#endif
in meinem MainWidget möchte ich, dass der Thread erst ausgeführt wird, wenn ich auf "start" drücke und abbricht, wenn ich auf "Stop" drücke.

Mein Widget halt also folgendes:

Code: Alles auswählen

	QPushButton *start = new QPushButton("&Start");
	start->setFont(QFont("Times", 15, QFont::Bold));
	connect(start, SIGNAL(clicked()),this, SLOT(start()));
...........


	QPushButton *pause = new QPushButton("&Break");
	pause->setFont(QFont("Times", 15, QFont::Bold));
	
	connect(pause, SIGNAL(clicked()), this, SLOT(stop()));

........

void MainWidget::start()
{
	thread.run();
}

void MainWidget::stop()
{
	thread.stop();
}

wo lieg ich denn falsch? Hab ich grundsätzlich schon einen Fehler drin??

Ich bin um jede Hilfe dankbar

LG

Verfasst: 10. Oktober 2007 16:09
von Zandru
dein run() ist protected - damit kannst du es nicht von aussen aufrufen. Mach es public.

Verfasst: 10. Oktober 2007 16:25
von Volker
Das run ist nicht umsonst protected. Richtig wäre es statt run start aufzurufen.
Von der Compilerfehlermeldung würde ich aber eher darauf schließen, dass irgendwas auf dem Heap angelegt werden sollte was nur auf dem Stack liegt. Ist mir aber zu unübersichtlich danach jetzt zu suchen. (Es gibt übrigens auch Code Tags für Beiträge)

Verfasst: 10. Oktober 2007 16:28
von qtprogram
okay danke.... aber ich bin mir grade unschlüssig Wo/ Was ich jetzt genau ändern muss...

Stimmt der rest sonst?

DANKE

Verfasst: 10. Oktober 2007 16:29
von Zandru
"Richtig wäre es statt run start aufzurufen. "

klar genug?